2017-02-17 65 views
1

我試圖在google中查詢一些文本並檢索結果數,例如,如果我搜索「C#」,我得到About 101,000,000 results (0.40 seconds),我想獲得該數字以進行排序所有將要傳遞給程序的查詢。 上面的代碼是我迄今爲止所做的,但它不工作,它只是檢索谷歌主頁。在Google中查詢時未使用API​​

private string _address = "https://www.google.com/?gl=us&hl=en&gws_rd=cr&pws=0#gl=us&hl=en&pws=0&q="; 
    public void ProcessQuery(Query query) 
    { 
     string uri = _address + query.QueryText; 
     string tag = "<div id=\"resultStats\">"; 
     int index; 
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); 
     HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
     StreamReader s = new StreamReader(resp.GetResponseStream(), Encoding.ASCII); 
     string result = s.ReadToEnd(); 
     index = result.IndexOf(tag) + tag.Length; 
     result = result.Substring(index, 100); 
     index = result.IndexOf("About ")+6; 
     result = result.Substring(index); 
     index = result.IndexOf(" "); 
     result = result.Substring(0,index); 
    } 

Query只是檢索和格式傳遞給程序的文本類。

編輯:我也想不做任何外部庫。

+0

它只檢索主頁,因爲顯然'QueryText'參數是空的。調試你的程序,你會發現 – Leo

回答

2

C#中的散列標記(#)在URL中使用時具有特殊含義。在將其添加到查詢字符串之前,您必須對其進行網址編碼,例如使用HttpUtility.UrlEncode

string uri = _address + HttpUtility.UrlEncode(query.QueryText); 
+0

爲什麼downvote? –

+0

對不起,不是個人,但你怎麼知道'QueryText'尚未被網址編碼?另外,即使它不是......你不認爲它會顯示關鍵字「C」的結果頁面而不是谷歌的主頁嗎? – Leo

+0

@Leo嘗試訪問https://www.google.com/?gl=us&hl=zh-CN&gws_rd=cr&pws=0#gl=us&hl=zh-CN&pws=0&q=C# –

相關問題