網絡數據抓取是大數據分析的前提,只有擁有海量的數據才能夠進行大數據分析,因此,爬蟲(數據抓取)是每個后端開發人員必會的一個技能,下面我們主要盤點一下php的爬蟲框架。
Goutte
Goutte庫非常有用,它可以為您提供有關如何使用PHP抓取內容的出色支持。 基于Symfony框架,它提供了API來抓取網站并從html / XML響應中抓取數據,它是免費開源的。 基于OOP的編程思想,非常適合大型項目的爬蟲,同時它有著還不錯的解析速度。 它需要php滿足5.5+。
simplehtmldom
這是一款html解析框架,它提供了類似于jquery的api,使得我們操作元素,獲取元素非常的方便。 它的缺點就是因為需要加載和分析大量dom樹結構,因此占用內存空間較大,同時它的解析速度也不是很快,不過它的使用便捷性是其它框架無法比擬的。 如果你要抓取一個少量的數據,那么它很適合你。
htmlSQL
這是一個非常有趣的php框架,通過這個框架你可以使用類似sql的語句來分析網頁中的節點。 通過這個庫,我們可以不用寫復雜的函數和正則表達式就可以獲取到任意想要的節點。 它提供了相對較快的解析,但是功能有限。 它的缺點就是這個庫已經不在維護了,不過使用它可能會對你的爬蟲理念有所提升。
Buzz
一個非常輕量級的爬蟲庫,它類似于一個瀏覽器,你可以非常方便地操作cookie,設置請求頭。 它擁有非常完善的測試文件,因此你可以安心無憂地使用它。 此外,它還支持http2的server push,你可以更快速的接收內容。
Guzzle
嚴格意義來講,它并不是一個爬蟲框架,它是要給http請求庫,它封裝了http請求,它具有一個簡單的操作方式,可幫助您構建查詢字符串,POST請求,流式傳輸大型上傳文件,流式傳輸大型下載文件,使用HTTP cookie,上傳JSON數據等。 它可以在同一接口的幫助下發送同步和異步請求。 它利用PSR-7接口處理請求,響應和流。這使您可以在Guzzle中使用其他PSR-7兼容的庫。 它可以抽象出底層的HTTP傳輸,使您能夠編寫環境并傳輸不可知代碼。即,對cURL,PHP流,套接字或非阻塞事件循環沒有硬性依賴。
request
如果你接觸過Python,就一定知道python中有個非常好用的http請求庫,它就是request,而這個庫就是php版的它,可以說它參考了request的所有精華,讓它也變得非常優雅高效。 通過請求,您可以發送HEAD,GET,POST,PUT,DELETE和PATCH HTTP請求。 借助請求,您可以添加標頭,表單數據,多部分文件和帶有簡單數組的參數,并以相同的方式訪問響應數據。
querylist
使用類似jQuery選擇器來做采集,告別復雜的正則表達式,可以非常方便的操作DOM,具有Http網絡操作能力、亂碼解決能力、內容過濾能力以及可擴展能力;
可以輕松實現諸如:模擬登陸、偽造瀏覽器、HTTP代理等意復雜的網絡請求;擁有豐富的插件,支持多線程采集以及使用PhantomJS采集JAVAScript動態渲染的頁面。
snoopy
Snoopy是一個php類,用來模擬瀏覽器的功能,可以獲取網頁內容,發送表單,可以用來開發一些采集程序。 它封裝了很多常用且實用的功能,比如獲取全部連接,獲取全部純文本內容等,它的表單模擬是它的一大亮點。
phpspider
國人開發的php爬蟲框架,作者曾用它爬取了知乎的百萬用戶,可以說框架在執行效率上還是非常不錯的。 此外,作者提供了一個非常好用的命令行工具,通過工具,我們可以非常方便的部署和查看我們的爬蟲效果和進度。