PHP網(wǎng)絡(luò)爬蟲

目前網(wǎng)絡(luò)爬蟲用的比較多的是用Python寫的,有很多第三方包可以直接使用,而使用PHP的網(wǎng)絡(luò)爬蟲很少有現(xiàn)成的開(kāi)發(fā)包,大多都是公司自己內(nèi)部開(kāi)發(fā)的,本文則主要介紹使用PHP如何開(kāi)發(fā)網(wǎng)絡(luò)爬蟲,提供正則匹配dom標(biāo)簽的封裝。

本文結(jié)構(gòu):

一、抓取需要登錄網(wǎng)頁(yè)

二、抓取不需要登錄的網(wǎng)頁(yè)

三、總結(jié)

本文適合有過(guò)PHP curl和正則開(kāi)發(fā)經(jīng)驗(yàn)的人群。

一、抓取需要登錄網(wǎng)頁(yè)

1、拿到cookie

需要登錄后的網(wǎng)頁(yè)通常利用curl模塊發(fā)送cookie模擬請(qǐng)求,查看cookie的方式如下:

2、利用cookie獲取網(wǎng)頁(yè)內(nèi)容

演示代碼如下:

其中phpcharset函數(shù)是轉(zhuǎn)換字符編碼用,具體代碼如下:

3、獲取網(wǎng)頁(yè)指定dom內(nèi)容

此處需要用到正則匹配HTML標(biāo)簽,下面提供的函數(shù)支持指定HTML標(biāo)簽、指定ID屬性和指導(dǎo)class屬性匹配:

二、抓取不需要登錄的網(wǎng)頁(yè)

同上面的方法,只是抓取網(wǎng)絡(luò)內(nèi)容的時(shí)候不需要指導(dǎo)cookie值。

三、總結(jié)

1、如果想爬取整個(gè)網(wǎng)站的內(nèi)容怎么操作?

利用上面的ihttp_get先獲取首頁(yè)內(nèi)容,然后利用get_tag_content獲取頁(yè)面所有的a標(biāo)簽內(nèi)容,然后遞歸即可。

2、get_tag_content之所以提供指定id熟悉和class熟悉,是為了方便查找特定的dom標(biāo)簽,可以更加快速的獲取想要的內(nèi)容入庫(kù)。

3、不熟悉正則表達(dá)式的童鞋可以通過(guò)simple_html_dom來(lái)解析,不過(guò)耗用內(nèi)存大。

4、如果抓取很多頁(yè)面,建議通過(guò)swoole開(kāi)啟多線程來(lái)抓取。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,008評(píng)論 25 709
  • 你爬了嗎? 要玩大數(shù)據(jù),沒(méi)有數(shù)據(jù)怎么玩?這里推薦一些33款開(kāi)源爬蟲軟件給大家。 爬蟲,即網(wǎng)絡(luò)爬蟲,是一種自動(dòng)獲取網(wǎng)...
    Albert新榮閱讀 2,311評(píng)論 0 8
  • 33款可用來(lái)抓數(shù)據(jù)的開(kāi)源爬蟲軟件工具 要玩大數(shù)據(jù),沒(méi)有數(shù)據(jù)怎么玩?這里推薦一些33款開(kāi)源爬蟲軟件給大家。 爬蟲,即...
    visiontry閱讀 7,693評(píng)論 1 99
  • 難怪有人喜歡養(yǎng)狗,真的那么乖,忍不住喜愛(ài)它。前天我在河邊散步,看到很多主人牽著狗。幾步一個(gè)幾步一個(gè)。我原來(lái)最怕的大...
    今墨閱讀 272評(píng)論 0 1
  • 姓名:王泓博 王映婷 年齡:10歲 6+歲 二組 考慮到二個(gè)寶貝都是在讀小學(xué),重要的是映婷剛上一年級(jí),所以哥哥和...
    Alice媽媽閱讀 144評(píng)論 1 1

友情鏈接更多精彩內(nèi)容