目前網(wǎng)絡(luò)爬蟲用的比較多的是用Python寫的摘投,有很多第三方包可以直接使用煮寡,而使用PHP的網(wǎng)絡(luò)爬蟲很少有現(xiàn)成的開發(fā)包,大多都是公司自己內(nèi)部開發(fā)的犀呼,本文則主要介紹使用PHP如何開發(fā)網(wǎng)絡(luò)爬蟲幸撕,提供正則匹配dom標簽的封裝。
本文結(jié)構(gòu):
一外臂、抓取需要登錄網(wǎng)頁
二坐儿、抓取不需要登錄的網(wǎng)頁
三、總結(jié)
本文適合有過PHP curl和正則開發(fā)經(jīng)驗的人群宋光。
一挑童、抓取需要登錄網(wǎng)頁
1、拿到cookie
需要登錄后的網(wǎng)頁通常利用curl模塊發(fā)送cookie模擬請求跃须,查看cookie的方式如下:
2站叼、利用cookie獲取網(wǎng)頁內(nèi)容
演示代碼如下:
其中phpcharset函數(shù)是轉(zhuǎn)換字符編碼用,具體代碼如下:
3菇民、獲取網(wǎng)頁指定dom內(nèi)容
此處需要用到正則匹配HTML標簽尽楔,下面提供的函數(shù)支持指定HTML標簽、指定ID屬性和指導class屬性匹配:
二第练、抓取不需要登錄的網(wǎng)頁
同上面的方法阔馋,只是抓取網(wǎng)絡(luò)內(nèi)容的時候不需要指導cookie值。
三娇掏、總結(jié)
1呕寝、如果想爬取整個網(wǎng)站的內(nèi)容怎么操作?
利用上面的ihttp_get先獲取首頁內(nèi)容婴梧,然后利用get_tag_content獲取頁面所有的a標簽內(nèi)容下梢,然后遞歸即可。
2塞蹭、get_tag_content之所以提供指定id熟悉和class熟悉孽江,是為了方便查找特定的dom標簽,可以更加快速的獲取想要的內(nèi)容入庫番电。
3岗屏、不熟悉正則表達式的童鞋可以通過simple_html_dom來解析,不過耗用內(nèi)存大漱办。
4这刷、如果抓取很多頁面,建議通過swoole開啟多線程來抓取娩井。