首先,隊列的作用不是批量處理,而是延時處理,也叫異步處理

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比旬陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式旬陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋旬陽地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
要做批量采集的話,首先你要劃分好區(qū)間,可以用php的多進程,也可以用php的cli模式做,只要數(shù)據(jù)不竄就行
這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據(jù)服務(wù)器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數(shù)可以由js產(chǎn)生并傳遞url,php后臺頁面根據(jù)URL抓頁面。然后ajax通過php,在數(shù)據(jù)庫或者是哪里設(shè)一個標(biāo)量,標(biāo)明檢測到哪里。由于前臺的html頁面執(zhí)行多少時候都沒問題,這樣php的內(nèi)存限制和執(zhí)行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環(huán)了。(你的500次for循環(huán)死了原因可能是獲取的數(shù)據(jù)太多,大過了php限制的內(nèi)存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取后再執(zhí)行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大于30秒的默認(rèn)執(zhí)行時間。
一般來說,PHP采集數(shù)據(jù)最簡單的辦法是使用file_get_content函數(shù),功能更強大的推薦使用cURL函數(shù)庫。
問題其實不難,自己都能寫。給你幾個思路吧:
1.在百度知道中,輸入linux,然后會出現(xiàn)列表。復(fù)制瀏覽器地址欄內(nèi)容。
然后翻頁,在復(fù)制地址欄內(nèi)容,看看有什么不同,不同之處,就是你要循環(huán)分頁的i值。
當(dāng)然這個是笨方法。
2.使用php的file或者file_get_contents函數(shù),獲取鏈接URL的內(nèi)容。
3.通過php正則表達式,獲取你需要的3個字段內(nèi)容。
4.寫入數(shù)據(jù)庫。
需要注意的是,百度知道有可能做了防抓取的功能,你剛一抓幾個頁面,可能會被禁止。
建議也就抓10頁數(shù)據(jù)。
其實不難,你肯定寫的出來。 還有,網(wǎng)上應(yīng)該有很多抓取工具,你找找看,然后將抓下來的數(shù)據(jù)
在做分析。寫入數(shù)據(jù)庫。
$sql?=?"insert?into?myorder?(pid,amount,ordernumber,time,uid,status)?VALUES?";
foreach?($ShoppingCart?as?$k?=?$v){
$sql?.=?"(".$v['pid'].",".$v['amount'].",'$ordernumber','$time','$uid','$status'),";
$sql?=?substr($sql,?0,strlen($sql)-1);
$res?=?mysql_query($sql,$conn);
if(!$res)?return?false;
}
當(dāng)前名稱:php批量采集數(shù)據(jù),php自動采集
文章URL:http://chinadenli.net/article13/dsidsds.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、服務(wù)器托管、定制網(wǎng)站、品牌網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)