2013-06-24 46 views
0

我想從一個網站檢索文章和其他內容。 我得到了爬蟲的想法,並假設我可以打開遙遠的頁面,並根據某些正則表達式獲取文本部分。 我想知道的是,我不僅可以通過單個頁面(或分頁)進行搜索,還可以通過整個網站進行搜索,而不必爲每個元素逐個運行爬網程序,並且不會忘記進程中的任何現有網址。通過整個網站的PHP爬行器

請注意,我不需要這是乾淨的,因爲它是一次性的事情。 我有一份合同的網絡機構想要向我收取大量資金,用於存儲我自己的數據庫,並且沒有辦法繞過它,因此我必須找到一個快速解決方法。 你能幫我解決這個問題嗎?

謝謝。

回答

0

您可以通過網站地圖確定其網站上的網頁,但這不是最可靠的解決方案,因爲網頁可能不在其網站地圖上。使用遞歸函數收集數據的最佳方式是從主頁開始,在檢索到的數據上使用正則表達式查找所有特定於站點的鏈接,直到您儘可能多地檢索鏈接爲止。這將會產生蜘蛛網效應,並且會產生大量數據。

我們目前有一個類似的實現,從一個糟糕的API系統中獲取大約5,000頁的數據。

+0

事情是我不需要大量的數據,我需要整個數據,沒有丟失任何東西,100%確定 – Baylock

+1

不幸的是,沒有辦法讓每個頁面100%確定 - 如果有沒有提及一個文件,這將是很難找到 - 特別是自動! – Chris

+0

例如添加了javascript。 –

0

如果沒有按站點提取所有鏈接,不可能不這樣做。即使使用某些第三方腳本,它們也必須至少發送儘可能多的http請求。

最簡單的方法是使用帶-r參數的wget,它將下載整個站點,然後在下載的文件中搜索給定的正則表達式。

+0

wget將得到我的文件,我不需要文件,我需要排序和篩選我獲取(僅文本),並將其存儲在新的數據庫中。我已經使用了一個網站吸盤軟件,但隨後我又回到了原來的位置,因爲我仍然必須弄清楚如何從所有下載的文件中獲取和排序數據。 – Baylock

+0

爲了優化我的答案,我的觀點是在一臺新服務器上重做我的網站,因爲我想離開將我劫爲人質的網絡公司。所以我的觀點並不是檢索我桌面上的數據,而是收集原始數據,對其進行分類,過濾並最終爲新網站重新創建一個新數據庫。考慮到這一點,我認爲我們沒有wget的贏家。 – Baylock