你可以把 CURLOPT_TIMEOUT 設(shè)置長(zhǎng)一點(diǎn) curl_setopt($ch, CURLOPT_TIMEOUT, 60);然后對(duì)抓取的結(jié)果做一個(gè)判斷,發(fā)現(xiàn)內(nèi)容太少的話,讓他再抓取一次。
10年積累的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有云南免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
這個(gè)要看所取數(shù)據(jù)的網(wǎng)站了,如果網(wǎng)頁(yè)使用ajax等技術(shù),那么可能取不到。如果是一般的網(wǎng)頁(yè),估計(jì)是你的語(yǔ)法有問(wèn)題,最好是發(fā)一下代碼看看。
就必須使用對(duì)應(yīng)的鍵,以你的代碼為例,如$info[url],$info[total_time]等等opt值??梢跃唧w參看mixed curl_getinfo ( resource $ch [, int $opt = 0 ] )原型的第二個(gè)參數(shù)$opt的選項(xiàng)對(duì)應(yīng)的opt鍵。
一般來(lái)說(shuō),PHP采集數(shù)據(jù)最簡(jiǎn)單的辦法是使用file_get_content函數(shù),功能更強(qiáng)大的推薦使用cURL函數(shù)庫(kù)。
直接模擬鏈接獲取百度搜索結(jié)果達(dá)到300多KB,推送到客戶端瀏覽器即使用Gzip壓縮也要100KB左右,耗時(shí)接近0s。但是百度自己的第一個(gè)get內(nèi)容到瀏覽器只有30KB左右。怎樣才能和百度一樣。
使用PHP的cURL庫(kù)可以簡(jiǎn)單和有效地去抓網(wǎng)頁(yè)。你只需要運(yùn)行一個(gè)腳本,然后分析一下你所抓取的網(wǎng)頁(yè),然后就可以以程序的方式得到你想要的數(shù)據(jù)了。
curl_setopt($ch, CURLOPT_NOBODY,true); 之后 通過(guò)curl_exec函數(shù)來(lái)獲取響應(yīng)頭信息。獲取設(shè)置 curl_setopt($ch, CURLOPT_NOBODY,false);然后對(duì)curl_exec獲取的值通過(guò)\r\n\r\n進(jìn)行分割截取第一部分即為響應(yīng)頭信息。
1、獲取請(qǐng)求頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函數(shù)執(zhí)行后,通過(guò) curl_getinfo($ch,CURLINFO_HEADER_OUT) 來(lái)獲取curl執(zhí)行請(qǐng)求的請(qǐng)求數(shù)據(jù)。
2、一種使用fsockopen,所有的頭信息全部手動(dòng)連接成字符串即可。一種使用curl,可以直接將頭信息寫成數(shù)組,調(diào)用curl_setopt設(shè)定頭信息即可。
3、curl_setopt($curl, CURLOPT_NOBODY,1); //啟用時(shí)將不對(duì)HTML中的BODY部分進(jìn)行輸出。
4、PHP curl可以從服務(wù)器端模擬一個(gè)http請(qǐng)求,例如抓取網(wǎng)頁(yè)、模擬登陸等。根據(jù)選項(xiàng)設(shè)置,可以在curl_exec的返回結(jié)果中獲取到響應(yīng)頭和body,但這沒(méi)有響應(yīng)的狀態(tài)嗎。