2011-07-23 48 views
5

我想設計自己的搜索引擎應用程序,其中所有結果都顯示給用戶在一個單一頁面上(來自Google/Bing等),而不像Google在不同頁面上顯示的那樣。如何設計一個定製的搜索引擎?

是否存在可以讓我獲得所有這些結果的API?

PS。我正在使用C#,並考慮爲這個接口IEnumerator

+3

這裏的問題具體是什麼? –

回答

0

你可以做的是從不同的API(bing/google等)獲取數據,然後在一個流程中顯示給用戶。否則,抓取搜索引擎是完全違法的。

對於Google,您可以訪問Google自定義搜索API,或者如果您有產品可以搜索Google Shopping API。

對於Bing,有一個簡單而直接的API。

0

兵有一個開放的API http://www.bing.com/developers

谷歌爲您提供了一個API,然後立即手中奪走它。 http://code.google.com/apis/websearch/docs/

谷歌API是不贊成,我認爲他們有另一個是更有限的。曾幾何時,他們擁有與Bing相媲美的API。

對於你提到的確切場景,最好的辦法是首先解析出結果的數量,然後繼續遍歷頁面。你也需要很好地處理錯誤,因爲谷歌經常談論它包含的結果的數量。

1

如果您只是想爲用戶提供搜索結果,那麼搜索引擎提供的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不存在的原因。

0

我在同一個項目中工作。 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名稱等問題也小鬼用於這一目的。

相關問題