我已經使用simplehtmldom編寫了自己的網絡爬蟲,並且爬網過程工作得非常好。它抓取起始頁面,將所有鏈接添加到數據庫表格中,設置會話指針,然後元素刷新頁面以進入下一頁。這一直持續下去,直到它用完鏈接使用cron編寫一個PHP網絡爬蟲
這工作正常,但顯然大網站的爬網時間非常繁瑣。我希望能夠加快一點,但可能會讓它成爲一個cron工作。
除了將內存限制/執行時間設置得更高之外,是否可以使其儘可能快速和高效?
我已經使用simplehtmldom編寫了自己的網絡爬蟲,並且爬網過程工作得非常好。它抓取起始頁面,將所有鏈接添加到數據庫表格中,設置會話指針,然後元素刷新頁面以進入下一頁。這一直持續下去,直到它用完鏈接使用cron編寫一個PHP網絡爬蟲
這工作正常,但顯然大網站的爬網時間非常繁瑣。我希望能夠加快一點,但可能會讓它成爲一個cron工作。
除了將內存限制/執行時間設置得更高之外,是否可以使其儘可能快速和高效?
內存不能是爬蟲的問題。
一旦完成了一個頁面並將所有相關數據寫入數據庫,您應該刪除爲該作業創建的所有變量。
100頁之後的內存使用量必須與1頁之後相同。如果不是這種情況,請查明原因。
您可以拆分不同進程之間的工作:通常解析頁面不會花費太多時間加載它,因此您可以將所有找到的鏈接寫入數據庫,並有多個其他進程將文檔下載到一個臨時目錄。 如果你這樣做,你必須確保
看起來像是在網絡瀏覽器中運行腳本。你可以考慮從命令行運行它。您可以執行多個腳本來同時在不同的頁面上進行爬網。這應該會加快速度。
他說他想將其轉換爲一個cronjob,所以我認爲他已經把它寫成一個命令行腳本。 – 2011-01-11 17:47:28
搜索SO或Google for php profiler。你可以確定究竟是什麼放緩了一切。從那裏,你可以問一個更具體的問題,比如'我如何加快`file_get_contents()`'的速度。 – 2011-01-11 17:18:16
我將在網站上使用此網站我/我的公司構建的網站僅用於檢查死鏈接,並檢查所有鏈接是否有合適的錨點標題,確保所有網頁都有標題/ h1標記等。 – Horse 2011-01-12 09:47:34