2011-08-23 66 views
0

我可以使用C#自動搜索網站,然後返回搜索結果嗎?使用C#搜索多個網站

是否有一個網絡爬蟲,如果我給它一個頂級域名(例如:我告訴它在stackoverflow.com上找到「funny」這個詞,它會告訴我所有的時間「有趣」出現了)?

這些網站允許通過他們的搜索欄進行搜索。

我需要網站合作來自動搜索嗎?

注意:我只打算每天進行一兩次搜索,所以我懷疑我會被阻止,或被要求對自己進行身份驗證。

回答

2

如果您計劃通過整個網站爬行來計算像這樣的文字,如果您不緩存它,您將被阻止,您將基本上請求網站的每一頁。也許考慮整合谷歌域搜索的呢?

這裏是一個網上搜尋頁詳細介紹瞭如何用C#接口的鏈接

http://code.google.com/apis/gdata/client-cs.html

編輯:對不起,這是不完全正確:http://gsalib.codeplex.com/

http://answers.oreilly.com/topic/2165-how-to-search-google-and-bing-in-c/

1

...web sites allow searching via their search bar ... Can I use C# to auto search websites, then return the search results?

是的,如果網站提供了一個URL作爲URL的查詢字符串參數提供的搜索字詞。

  http://yourTargetDomain?searchterm=foo 

但除非網站已專門從URL搜索結果是結構化的數據,該網站不會「告訴[你]所有的時候,‘搞笑’出現」,但會送你回去搜索適合瀏覽器顯示的響應,因此您必須從HTML流中解析結果。

例如:

http://philadelphia.craigslist.org/search/tls?query=ladder&srchType=A&minAsk=&maxAsk=

+0

如果是這麼簡單,我不會需要幫助。 該網站分配一個搜索ID前。 「/SearchResults.aspx?searchID=00865caa-ed5c-46a1-b850-0450f102dda5&page=0&set=0&pageSize=100」 但是,我想要訪問的頁面只是一個標準網頁。例如:「[很多其他不變的東西] RecID = 5358254」 – wizlog

+0

@wizlog:我想你誤會了我。我並不是說這很簡單,而是我告訴你,這確實不像你希望的那麼簡單;搜索字詞追加到查詢字符串的這樣的URL的結果是HTML標記流,而不僅僅是出現的列表。 – Tim

1

我會考慮建立一個RSS聚合。 RSS是標準化的,所以這可能是從各種來源收集搜索結果最可靠的方式。

編輯:對於不支持RSS

對於不支持RSS的網站的網站,你可以考慮使用一個屏幕刮刀。看看這篇文章的代碼項目,讓你開始:

http://www.codeproject.com/KB/aspnet/weather.aspx

+0

如果網站沒有提供RSS源,該怎麼辦? – wizlog

+0

您可以使用屏幕抓取工具查看不支持RSS的網站。 –

+0

是的,但我仍然需要手動去每個網頁並輸入我的查詢,對吧?我將搜索50個獨立的站點,這就是爲什麼我正在尋找一種方法使其更快。 – wizlog