2014-02-26 39 views
0

我想製作一個可以瀏覽網站上每個頁面的bot,例如walmart.com。Bot來篩選網站的每一頁

這不是一個垃圾郵件機器人,它不會被用於任何惡意的原因,它純粹是一個數據挖掘練習,我想要做的是提高我的技能。我基本上想要從walmart.com抓住每一個sku,並將價格記錄在數據庫中。我可以管理找到skus並獲取每個sku的價格,並將其保存到MySQL,但我不知道該怎麼做是去walmart.com,然後使用代碼自動打開每個產品頁面。我知道這可能是一項非常艱鉅的任務,如果有人能夠指引我朝着正確的方向發展,我願意投入時間和精力去實現目標。在這一點上,我對如何開始打開每一個產品頁面都很無知。

我使用VB.Net進行編程,但我很樂意贏取窗體,WPF或控制檯解決方案。很想聽聽人們對此的看法。

+0

我認爲,沃爾瑪可能會認爲這是一個可疑的DOS攻擊,並阻止你的IP,所以我們警惕內的所有鏈接(特別是如果在公司機器上這樣做,因爲您的公司IP可能被列入黑名單) –

+0

您提出了一個好的觀點。我要在家裏「扔掉」機器上運行這個項目,我可以免費工作:)所以如果我被阻止,那麼,我想我只需要停止在沃爾瑪購物(不是一個大的損失在我的書中,我沒有在沃爾瑪購物):)如果我可以把這個項目付諸實踐,我會在這裏發佈是否我感興趣的任何人被阻止。 – TypeM1smatch

回答

1

最好的辦法是使用HTML敏捷包等實用工具。這是某人在.NET中解析和挖掘數據的最佳方式,我知道。你可以在這裏下載http://htmlagilitypack.codeplex.com/

這裏是一些代碼,將提取的HTML頁面

Private Sub LoadLinks(ByVal page As String) 
    Dim doc As HtmlDocument = New HtmlDocument 

    doc.Load(pathFront & page) 

    mainsource.Title = doc.DocumentNode.SelectSingleNode("//title").InnerText 

    For Each link As HtmlNode In doc.DocumentNode.SelectNodes("//a[@href]") 

     Dim att As HtmlAttribute = link.Attributes("href") 

     If att.Value.Contains(".htm") Then 

      mainsource.LinkList.Add(New PageLinks With {.PageLink = att.Value}) 


     End If 

    Next 

    For Each sublink In mainsource.LinkList 

     Dim innerDoc As HtmlDocument = New HtmlDocument 

     innerDoc.Load(pathFront & sublink.PageLink) 

     Dim subsource As QadLinkHeader = New QadLinkHeader 

     subsource.Title = innerDoc.DocumentNode.SelectSingleNode("//title").InnerText 
     If Not innerDoc.DocumentNode.SelectNodes("//a[@href]") Is Nothing Then 

      For Each innerlink As HtmlNode In innerDoc.DocumentNode.SelectNodes("//a[@href]") 

       Dim att As HtmlAttribute = innerlink.Attributes("href") 

       subsource.LinkList.Add(New PageLinks With {.PageLink = att.Value}) 

      Next 

     End If 

     mainsource.NestedPageLinks.Add(subsource) 

    Next 

End Sub 
+0

謝謝,我一定會對此進行調查。關於你的頭,你知道嗎,我可以使用這個工具而不指定我想看的hrefs嗎?我的最終願景是前往walmart.com,然後只是遍歷每個產品頁面,而不指定任何鏈接。你知道我能否以這種方式利用敏捷包? – TypeM1smatch

+0

絕對可以使用遞歸和xpath來查找任何html元素並獲取內容.. –

+0

我用代碼 –