酷!學園

技術討論區 => 程式討論版 => PHP程式設計討論區 => 主題作者是: a912335 於 2013-11-20 00:48

主題: php curl 使用
作者: a9123352013-11-20 00:48
我只想取得google網頁上2002股票數據方框
可是不知為什麼就是無法跑出來
是我哪裡寫錯了?
請各位程式高手幫幫忙~~~

<?php   
header("Content-Type: text/html; charset=big5");
$url = "https://www.google.com.tw/search?newwindow=1&biw=1280&bih=908&q=2002&oq=2002&gs_l=serp.3..0l10.226330.226946.0.227234.4.4.0.0.0.0.83.276.4.4.0....0...1c.1.31.serp..0.4.276.pbIQyeh6GVI";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Bee-ma");
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Google Bot");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//在需要用戶檢測的網頁里需要增加下面兩行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
preg_match('/<li[^>]*class="mod g tpo knavi obcontainer"[^>]*>(.*?)<\/li>/Ui',$contents,$match);


$title = $match[1];

echo "$title<BR>";
?>
主題: Re: php curl 使用
作者: Yamaka2013-11-20 02:17
我只想取得google網頁上2002股票數據方框
可是不知為什麼就是無法跑出來
是我哪裡寫錯了?
請各位程式高手幫幫忙~~~

<?php   
header("Content-Type: text/html; charset=big5");
$url = "https://www.google.com.tw/search?newwindow=1&biw=1280&bih=908&q=2002&oq=2002&gs_l=serp.3..0l10.226330.226946.0.227234.4.4.0.0.0.0.83.276.4.4.0....0...1c.1.31.serp..0.4.276.pbIQyeh6GVI";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Bee-ma");
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Google Bot");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//在需要用戶檢測的網頁里需要增加下面兩行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
preg_match('/<li[^>]*class="mod g tpo knavi obcontainer"[^>]*>(.*?)<\/li>/Ui',$contents,$match);


$title = $match[1];

echo "$title<BR>";
?>

先看一下抓回來的 $contents 內容跟直接用瀏覽器抓的內容是否一樣
主題: Re: php curl 使用
作者: jackmr2015-03-16 04:35
google 會擋非瀏覽器行為的爬蟲

採 cookie 和 IP 雙驗證

每一個 IP 有個不須要 cookie 的容許次數, 我的經驗是 "3" 次. 再來它就會寫入 cookie.. 你可以安裝 firefox 擴展 "Live http header" 來看它丟什麼 cookie 給你

當你被擋當然就什麼都讀不到了.
主題: Re: php curl 使用
作者: shinhrn2015-10-19 15:37
google 會擋非瀏覽器行為的爬蟲
採 cookie 和 IP 雙驗證
請問你知道他如何查知 擋非瀏覽器行為的爬蟲?
我把 cookie 刪除 和 IP (ADSL) 換一個它好像都記得住耶!!!真是奇怪!!!!