2015-10-30 51 views
-2

我有一個需要抓取多個網站(如100個不同的網站),並將其主頁內容保存在數據庫中。但問題不是所有這些網站都有相同的結構和相同的鏈接文本。例如,一個網站可能有「關於我們」,而另一網站的相同內容可能在一個名爲「我們是誰」的頁面下。因此,很難識別並列出一個數據庫列中的常見內容。同樣遍歷100個或更多網站的內部頁面並保存每個頁面的抓取數據並將它們放在公共列中變得更加難以解決。 我該如何解決這個問題?我會很感激任何想法,可以幫助我做到這一點。 我正在使用PHP和cUrl來開發解決方案。刮多個網站,並保存PHP中的常見頁面名稱下的內容

下面更清晰的例子。

網站1個鏈接 - 主頁/關於我們/產品/聯繫我們

網站2個鏈接 - 主頁/我們是誰/服務/ FAQ /聯繫

網站3個環節 - 首頁/我們做什麼/本公司/聯繫我們

網站鏈接4 - 首頁/註冊/店/我們在哪裏

現在我想上面的鏈接進行自動分類如下,

關於我們列 - 關於我們,我們是誰/我公司

聯繫我們列 - 聯繫我們/聯繫我們/我們在哪裏

產品列 - 產品/我們做什麼

附:我更喜歡聽到不是編碼示例的方法。

+2

不知道你打算如何使用/訪問數據,而很難提供建議。例如,很容易識別包含電子郵件地址的頁面 - 儘管這些頁面現在很少發佈。郵政地址是可能的,但更棘手。例如,提取產品目錄的通用解決方案將非常困難。 – symcbean

+0

好吧,如果我理解正確,這是要求一個代碼(用PHP),可以用來收集一些隨機網站,這有兩個upvotes?我錯過了什麼...? – Smar

+0

這似乎過於寬泛,不適合在stackoverflow和邊界線問如何解決具體問題的代碼。 – k0pernikus

回答

1

是的。你可能需要用C,C#或C++來構建一個機器人,並在同一事物的不同例子列表中進行編碼。

它看起來是這樣的:

switch (possiblenames) 
{ 
    case About Us: 
    ### Rest of Code 
    break; 
    case Who are we?: 
    ### Rest of Code 
    break; 
} 
+0

可以說我們有1000多個網站。所以關於我們的部分可以用100種不同的方式陳述,因爲我將不得不遍歷所有1000個網站來查找關於我們不同頁面的數量。 – TechyTee

1

只需使用你的URL列表上的捲曲或wget的,然後整個數據存儲到數據庫中。 但是,如果您還希望顯示已存儲數據的頁面,則還必須存儲與頁面相關的數據(css,js,images,...),就像Web瀏覽器在您執行操作時執行的操作「將頁面另存爲...」。

0

而不是刷新頁面內容爲「關於」,「關於我們」,「我們是誰」等,只要做到這一點與頁面鏈接:<a href="about">,因爲那些將最有可能比實際鏈接更標準化文字:"About Us"

建立關鍵字列表,然後通過這些關鍵字過濾鏈接/ URL ...這應該會幫助您更輕鬆地將它們放入適當的類別中。如果某些內容與您的關鍵字不匹配,請將其放入「待編輯」列表中。看看這些內容,找出它的屬性,然後將其添加到關鍵字列表中。