谷歌搜索结果html代码c#



我必须创建一个应用程序,对于给定的术语,它将从谷歌搜索页面下载前10个结果的链接,但有一个问题,

如果我用webClient下载源代码,而不是html,我会得到JS代码。

如果我查看Google chrome(ctrl+u)中的源代码,我会得到同样的结果,但如果我尝试使用内置的开发工具检查该元素,我可以看到真正的html代码

有人知道我如何下载真正的html代码以便提取链接吗?

您应该使用Google自定义搜索API

http://code.google.com/apis/customsearch/v1/overview.html

这里有一个例子,显示了搜索"汽车"的前10个结果

<html>
  <head>
    <title>JSON/Atom Custom Search API Example</title>
  </head>
  <body>
    <div id="content"></div>
    <script>
      function hndlr(response) {
      for (var i = 0; i < response.items.length; i++) {
        var item = response.items[i];
        // in production code, item.htmlTitle should have the HTML entities escaped.
        document.getElementById("content").innerHTML += "<br>" + item.htmlTitle;
      }
    }
    </script>
    <script src="https://www.googleapis.com/customsearch/v1?key=YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=cars&callback=hndlr">
    </script>
  </body>
</html>

您可以制作一个Perl脚本来只提取您想要的数据,即使它包含大量JavaScript,文档也是有效的HTML,因此您可以使用HTML解析器转换为XHTML并使用XML::SimpleXML::Twig

这是我使用API从谷歌获得搜索结果时使用的一些代码:

string googleUriPattern =
        "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&safe=off&rsz=large&userip={0}&q={1}";
var requestUri = new Uri(
    string.Format(
        googleUriPattern,
        "A valid IP address",
        "query"
    ));
var httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
httpWebRequest.Timeout = 5000;
using (var webResponse = httpWebRequest.GetResponse())
using (var sr = new StreamReader(webResponse.GetResponseStream()))
{
    var result = JsonConvert.DeserializeXNode(sr.ReadToEnd(), "responseData");
    var searchResultCount = Convert.ToInt32((string)result.Descendants("estimatedResultCount").FirstOrDefault());
}

正如你所看到的,我的案例是确定谷歌对查询的估计结果计数,但你会得到完整的回复,如果你愿意,你可以从中读取结果。

相关内容

  • 没有找到相关文章

最新更新