我想設計自己的搜索引擎應用程序,其中所有結果都顯示給用戶在一個單一頁面上(來自Google/Bing等),而不像Google在不同頁面上顯示的那樣。如何設計一個定製的搜索引擎?
是否存在可以讓我獲得所有這些結果的API?
PS。我正在使用C#,並考慮爲這個接口IEnumerator
?
我想設計自己的搜索引擎應用程序,其中所有結果都顯示給用戶在一個單一頁面上(來自Google/Bing等),而不像Google在不同頁面上顯示的那樣。如何設計一個定製的搜索引擎?
是否存在可以讓我獲得所有這些結果的API?
PS。我正在使用C#,並考慮爲這個接口IEnumerator
?
你可以做的是從不同的API(bing/google等)獲取數據,然後在一個流程中顯示給用戶。否則,抓取搜索引擎是完全違法的。
對於Google,您可以訪問Google自定義搜索API,或者如果您有產品可以搜索Google Shopping API。
對於Bing,有一個簡單而直接的API。
檢查NUTCH。這是你想要的?
兵有一個開放的API http://www.bing.com/developers
谷歌爲您提供了一個API,然後立即手中奪走它。 http://code.google.com/apis/websearch/docs/
谷歌API是不贊成,我認爲他們有另一個是更有限的。曾幾何時,他們擁有與Bing相媲美的API。
對於你提到的確切場景,最好的辦法是首先解析出結果的數量,然後繼續遍歷頁面。你也需要很好地處理錯誤,因爲谷歌經常談論它包含的結果的數量。
如果您只是想爲用戶提供搜索結果,那麼搜索引擎提供的API可能就是要走的路。正如已經提到的Bing's Live Search API(我沒有用過但看起來很好),還有Google's Web Search API。 此外,還有Yahoo BOSS,我發現它很容易使用。然而,看起來BOSS現在是一個付費API--所以根據你的預算/意圖,它可能不適合。
谷歌的網頁搜索API現在已經被棄用,但仍然適用於少量查詢 - 這是一個像this number of results counter這樣的工具構建的平臺。它已被替換爲Google Custom Search API,這取決於您的需求可能會或可能不會爲您工作。我沒有使用它,但它看起來很好,並且對於少量查詢是免費的。
搜索和解析搜索頁面的問題是,搜索引擎會定期更改搜索結果頁面的底層HTML,因此任何屏幕抓取方法都會非常脆弱。此外,大多數商業搜索引擎的terms of service禁止自動訪問 - 如果您繼續前進,他們可能會阻止您的抓取工具。這兩個問題可能是真棒第三方解析API不存在的原因。
我在同一個項目中工作。 Generate sitemap
private void SubmitSitemap(string PortalName)
{
//PING SEARCH ENGINES TO LET THEM KNOW WE UPDATED OUR SITEMAP
//resubmit to google
System.Net.WebRequest reqGoogle = System.Net.WebRequest.Create("http://www.google.com/webmasters/tools/ping?sitemap=" + HttpUtility.UrlEncode("http://your path'" + PortalName + "'/sitemap.xml"));
reqGoogle.GetResponse();
//resubmit to ask
System.Net.WebRequest reqAsk = System.Net.WebRequest.Create("http://submissions.ask.com/ping?sitemap=" + HttpUtility.UrlEncode("http://your path + "'/sitemap.xml"));
reqAsk.GetResponse();
//resubmit to yahoo
System.Net.WebRequest reqYahoo = System.Net.WebRequest.Create("http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=YahooDemo&url=" + HttpUtility.UrlEncode("http://yourpath/sitemap.xml"));
reqYahoo.GetResponse();
//resubmit to bing
System.Net.WebRequest reqBing = System.Net.WebRequest.Create("http://www.bing.com/webmaster/ping.aspx?siteMap=" + HttpUtility.UrlEncode("http://yourpath + "'/sitemap.xml"));
reqBing.GetResponse();
}
生成robots.txt
文件,並將其放置在你的根directory.Friendly名稱等問題也小鬼用於這一目的。
這裏的問題具體是什麼? –