作者 主題: php curl 使用  (閱讀 2386 次)

0 會員 與 1 訪客 正在閱讀本文。

a912335

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
php curl 使用
« 於: 2013-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>";
?>

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: php curl 使用
« 回覆 #1 於: 2013-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 內容跟直接用瀏覽器抓的內容是否一樣

jackmr

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
    • 數碼維基
Re: php curl 使用
« 回覆 #2 於: 2015-03-16 04:35 »
google 會擋非瀏覽器行為的爬蟲

採 cookie 和 IP 雙驗證

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

當你被擋當然就什麼都讀不到了.
hi all !

shinhrn

  • 懷疑的國中生
  • **
  • 文章數: 31
    • 檢視個人資料
Re: php curl 使用
« 回覆 #3 於: 2015-10-19 15:37 »
google 會擋非瀏覽器行為的爬蟲
採 cookie 和 IP 雙驗證
請問你知道他如何查知 擋非瀏覽器行為的爬蟲?
我把 cookie 刪除 和 IP (ADSL) 換一個它好像都記得住耶!!!真是奇怪!!!!