【问题标题】:HttpClient doesn't get full website html sourceHttpClient 没有获得完整的网站 html 源
【发布时间】:2016-04-16 11:32:47
【问题描述】:

我尝试从http://olx.pl/ 站点取消报价,我正在使用 HttpClient,问题是从客户端检索的站点方式不同,并且不包含报价列表,就像它在直接从浏览器访问的源代码中一样。任何的想法? 这是我的代码:

  string url = "http://olx.pl/oferty/q-diablo/?search%5Bdescription%5D=1";
  HttpClient client = new HttpClient();
  string result = await client.GetStringAsync(url);

【问题讨论】:

  • 尝试更改用户代理
  • 可能是因为该内容是通过 javascript 生成的。
  • 正如 Cyclone 所说,许多网站使用 ajax 和 javascript 来生成内容,HttpClient 不运行 javascript。

标签: c# http web-scraping win-universal-app html-agility-pack


【解决方案1】:

HttpClient 不会加载从 javascript 生成的内容。相反,您可以使用将运行 js 的 WebView。我两个都跑了,HttpClient 结果的长度为 235507,WebView 结果的长度为 464476。

    WebView wv = new WebView();
    wv.NavigationCompleted += Wv_NavigationCompleted;
    wv.Navigate(new Uri(url));

    private async void Wv_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
    {
        string wvresult = await sender.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });
    }

【讨论】:

  • 谢谢,我已经尝试过这个解决方案,当我将 WebView 添加到 xaml 只是为了检查它的加载是否正确时,所有显示都正确,但是 wvresult 仍然只包含没有优惠的 html,真的很奇怪,有没有加载后获取WebView html源的任何其他方式?
  • 如何查看内容?有时发生在我身上,没有在调试手表中显示所有的 html。但是当我将它保存到一个文件中时,它包含了所有内容。
  • 很好的建议,谢谢!是的,调试手表没有向我显示所有的 html,但是当我保存它时,它包含了所有内容!再次感谢
猜你喜欢
  • 2021-11-04
  • 1970-01-01
  • 2011-05-23
  • 2020-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 2017-05-08
  • 1970-01-01
相关资源
最近更新 更多