pcntl_fork或者swoole_process實現(xiàn)多進程并發(fā)。按照每個網(wǎng)頁抓取耗時500ms,開200個進程,可以實現(xiàn)每秒400個頁面的抓取。
創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設計、成都網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務銀海,10多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220
curl實現(xiàn)頁面抓取,設置cookie可以實現(xiàn)模擬登錄
simple_html_dom 實現(xiàn)頁面的解析和DOM處理
如果想要模擬瀏覽器,可以使用casperJS。用swoole擴展封裝一個服務接口給PHP層調用
在這里有一套爬蟲系統(tǒng)就是基于上述技術方案實現(xiàn)的,每天會抓取幾千萬個頁面。
1、抓取網(wǎng)頁、分析請求
2、解析網(wǎng)頁、尋找數(shù)據(jù)
3、儲存數(shù)據(jù)、多頁處理
翻頁有規(guī)律:
很多網(wǎng)址在第一頁時并沒有變化,多翻下一頁后規(guī)律就出來,比如 豆瓣第一頁 和 豆瓣第三頁
發(fā)現(xiàn)start為40,limit=20,所以猜測start=0就是第一頁,每頁顯示20條數(shù)據(jù),對于第三頁顯示的參數(shù)可以一個個刪除驗證,可以減去不必要的參數(shù), 但是刪除前一定要做好數(shù)據(jù)的對比
(1) 文本框輸入后產(chǎn)生一個請求,如常見的登錄、注冊頁面
Referer:表示當前請求的來源
Request URL:表示實際請求地址
翻頁后URL不變,該如何尋找請求?
如:
通過對比可以發(fā)現(xiàn)網(wǎng)站是通過pageIndex參數(shù)控制翻頁的,?表示連接
接下來用抓包工具分析下 ,從第四頁開始看URL就知道了,但是前面幾面需要查看請求的參數(shù),這里偏多,就切換到【Inspectors--Webforms】選項,看的比較直觀
類似的網(wǎng)站還有 今日頭條 ,有興趣的朋友可以去研究下
(可通過獲取max_behot_time的值而改變as和cp)
其實用PHP來爬會非常方便,主要是PHP的正則表達式功能在搜集頁面連接方面很方便,另外PHP的fopen、file_get_contents以及l(fā)ibcur的函數(shù)非常方便的下載網(wǎng)頁內(nèi)容。
具體處理方式就是建立就一個任務隊列,往隊列里面插入一些種子任務和可以開始爬行,爬行的過程就是循環(huán)的從隊列里面提取一個URL,打開后獲取連接插入隊列中,進行相關的保存。隊列可以使用數(shù)組實現(xiàn)。
當然PHP作為但線程的東西,慢慢爬還是可以,怕的就是有的URL打不開,會死在那里。
道理上講不可行,不管是PHP還是python,爬蟲技術用于抓取網(wǎng)頁解析內(nèi)容和靜態(tài)內(nèi)容,也就是在瀏覽器不解析js腳本時的網(wǎng)頁內(nèi)容,因為js腳本解析需要用到瀏覽器內(nèi)置的js解析程序,而php和python簡單爬蟲都做不到這一點,如果是自己的網(wǎng)站抓取,用異步提交放到緩存里讓后臺腳本處理,如果是別人的網(wǎng)站就不用考慮了。爬蟲程序要加上完整的腳本解析程序,還要保證定向抓取不拿到垃圾數(shù)據(jù),當然如果你能做到這些,就可以去百度工作了
以下是訪問某音樂網(wǎng)站,并獲取其歌曲名等數(shù)組的示例,你可以參考:
?php
header('Content-type:text/html;charset=utf-8');
$doc = file_get_contents('');
$pa = '{MSL\((.*)\);}';
preg_match_all($pa,$doc,$r);
for($i=0;$icount($r[1]);$i++)
{
$r1 = explode(', ',$r[1][$i]);
echo '歌曲標題:'. iconv('gb2312','utf-8',$r1[0]) .' 歌曲ID:'.$r1[1].'br/';
}
?
網(wǎng)頁名稱:爬蟲php網(wǎng)頁數(shù)據(jù)分析 php怎么爬數(shù)據(jù)
轉載源于:http://muchs.cn/article0/docspoo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、虛擬主機、企業(yè)網(wǎng)站制作、做網(wǎng)站、建站公司、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)