30/09/2018, 20:08

Cách sử dụng PHP CURL lấy dữ liệu từ FRAME?

Mọi người ơi cho mình hỏi mình muốn lấy dữ liệu từ 1 trang khác bằng php curl nhưng trang đó chỗ cần lấy dữ liệu ( dữ liệu tự động cập nhật thay đổi liên tục ) thì nó sử dùng frame ở đó? Mình thử nhưng không lấy được dữ liệu đó không biết có cách nào lấy không vậy?

17XGOD viết 22:20 ngày 30/09/2018

Bạn dùng gì để lấy vậy ??

Le Hieu viết 22:18 ngày 30/09/2018

Mình mới tìm hiểu sử dụng php curl để lấy dữ liệu từ 1 trang khác, giờ có 1 trang nó sử dụng frame ở chỗ cần lấy đó bạn mình tìm hiểu nhưng k thể lấy được nó không trả về gì cả? mình dùng class php curl này


class cURL {

var $headers;

var $user_agent;

var $compression;

var $cookie_file;

var $proxy;

function cURL($cookies=TRUE,$cookie='cookies.txt',$compression='gzip',$proxy='') {

$this->headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';

$this->headers[] = 'Connection: Keep-Alive';

$this->headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';

$this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';

$this->compression=$compression;

$this->proxy=$proxy;

$this->cookies=$cookies;

if ($this->cookies == TRUE) $this->cookie($cookie);

}

function cookie($cookie_file) {

if (file_exists($cookie_file)) {

$this->cookie_file=$cookie_file;

} else {

fopen($cookie_file,'w') or $this->error('The cookie file could not be opened. Make sure this directory has the correct permissions');

$this->cookie_file=$cookie_file;

fclose($this->cookie_file);

}

}

function get($url) {

$process = curl_init($url);

curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers);

curl_setopt($process, CURLOPT_HEADER, 0);

curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);

if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);

if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);

curl_setopt($process,CURLOPT_ENCODING , $this->compression);

curl_setopt($process, CURLOPT_TIMEOUT, 30);

if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy);

curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);

$return = curl_exec($process);

curl_close($process);

return $return;

}

function post($url,$data) {

$process = curl_init($url);

curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers);

curl_setopt($process, CURLOPT_HEADER, 1);

curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);

if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);

if ($this->cookies == TRUE) curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);

curl_setopt($process, CURLOPT_ENCODING , $this->compression);

curl_setopt($process, CURLOPT_TIMEOUT, 30);

if ($this->proxy) curl_setopt($process, CURLOPT_PROXY, $this->proxy);

curl_setopt($process, CURLOPT_POSTFIELDS, $data);

curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($process, CURLOPT_POST, 1);

$return = curl_exec($process);

curl_close($process);

return $return;

}

function error($error) {

echo "<center><div 
style='width:500px;border: 3px solid #FFEEFF; padding: 3px; 
background-color: #FFDDFF;font-family: verdana; font-size: 
10px'><b>cURL Error</b><br>$error</div></center>";

die;

}

}

$cc = new cURL();

$cc->get('http://www.example.com');

$cc->post('http://www.example.com','foo=bar');

?>

Mình dùng phương thức get,

Phan Hoàng viết 22:24 ngày 30/09/2018

Bạn phải parser cái html và tìm đến thẻ iframe và cURL cái url của iframe, chứ cURL nó là command, không phải browser nên sao mà nó hiểu và load được nội dung trong iframe được nhỉ ^^ Cũng giống như các lệnh gọi ajax ý, các Search Engine và parser làm sao crawler được nếu không tự gọi 1 request nữa.

Bài liên quan
0