Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不使用API的Google查询_C#_.net_Visual Studio - Fatal编程技术网

C# 不使用API的Google查询

C# 不使用API的Google查询,c#,.net,visual-studio,C#,.net,Visual Studio,我试图在google中查询一些文本并检索结果计数,例如,如果我搜索“C#”,我会得到大约101000000个结果(0.40秒),我想得到这个数字来对所有要传递给程序的查询进行排名。 上面的代码是我到目前为止所做的,但它不起作用,它只是检索谷歌主页 private string _address = "https://www.google.com/?gl=us&hl=en&gws_rd=cr&pws=0#gl=us&hl=en&pws=0&q

我试图在google中查询一些文本并检索结果计数,例如,如果我搜索“C#”,我会得到大约101000000个结果(0.40秒),我想得到这个数字来对所有要传递给程序的查询进行排名。 上面的代码是我到目前为止所做的,但它不起作用,它只是检索谷歌主页

    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);
    }
私有字符串\u地址=”https://www.google.com/?gl=us&hl=en&gws_rd=cr&pws=0#gl=us&hl=en&pws=0&q=";
公共作废处理查询(查询)
{
字符串uri=_地址+query.QueryText;
字符串标签=”;
整数指数;
HttpWebRequest req=(HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse resp=(HttpWebResponse)req.GetResponse();
StreamReader s=新的StreamReader(resp.GetResponseStream(),Encoding.ASCII);
字符串结果=s.ReadToEnd();
index=result.IndexOf(tag)+tag.Length;
结果=结果子字符串(索引,100);
索引=结果。IndexOf(“大约”)+6;
结果=结果。子字符串(索引);
index=result.IndexOf(“”);
结果=结果。子字符串(0,索引);
}
Query
只是一个检索并格式化传递给程序的文本的类

编辑:我也希望在不使用任何外部库的情况下进行编辑。
C
中的哈希标记(
)在URL中使用时具有特殊意义。在将其添加到查询字符串之前,必须对其进行URL编码,例如,使用:


它只检索主页,因为
QueryText
属性显然是空的。调试你的程序,你会发现外面很糟糕,不是个人的,但你怎么知道
QueryText
还没有被url编码?还有,即使不是…你不认为它至少会显示一个关键字
C
的结果页面,而不是谷歌的主页吗?@Leo尝试访问@Leo与我的不好相比…我想我需要一杯咖啡…现在向上投票谢谢你的编码提示,但我从请求中得到的回应是谷歌主页,而不是期望的搜索结果。我不知道为什么,因为当我使用Bing地址时,效果非常好。
string uri = _address + HttpUtility.UrlEncode(query.QueryText);