c httpclient抓取网页(【经济学人*敏*感*词*教你学英语】控件)

优采云 发布时间: 2022-02-07 16:11

  c httpclient抓取网页(【经济学人*敏*感*词*教你学英语】控件)

  使用 HttpWebRequest 方法非常有效,但是根据我的经验,当页面上的脚本没有实际的 Web 浏览器可以渲染时,就会出现许多问题,例如您遇到的问题。我的经验是,当页面没有要呈现的实际 Web 浏览器,它会导致许多问题,就像您所拥有的一样。

  我通过在 Windows 窗体上放置一个实际的 WebBrowser 控件然后将该控件导航到所需的 URL 来解决这个问题。 ,解决了这个问题。当控件(它是一个真正的 Web 浏览器)完成页面呈现后,您可以访问其中的任何内容。例如,如果在隐藏的 DIV 元素中存在被打乱的文本(阻止抓取的常用策略),您无法从页面源中获取它,但在 WebBrowser 控件中您仍然可以获取它,因为在为了显示它必须由客户端脚本解密。例如,如果某些文本在隐藏的 DIV 元素中被打乱(防止抓取的常用策略),它无法从页面源中获取,但在 WebBrowser 控件中,您仍然可以获取该文本,因为为了显示它,它必须已被客户端脚本解密。在WebBrowser控件中“看得到就得到”。

  编辑:最简单的实现。编辑:最简单的实现。只需尝试一下,看看缺少的源代码现在是否存在于文档源中。

  创建一个窗口窗体。创建一个窗口窗体。添加一个名为 button1. 的按钮 添加一个名为 button1 的按钮。添加一个名为 webBrowser1 的 WebBrowser 控件,取消停靠并调整其大小。添加一个名为 textBox1 的 TextBox 并将其设为多行。然后在表单后面添加这段代码: 然后在表单后面添加这段代码:

   private void button1_Click(object sender, EventArgs e) {

string url = "http://google.ca";

webBrowser1.Navigate(url);

}

private void webBrowser1_DocumentCompleted(object sender,

WebBrowserDocumentCompletedEventArgs e) {

string pageSource = webBrowser1.Document.Body.OuterHtml;

textBox1.Text = pageSource;

}

  将上述网址替换为您的网址。运行表单并单击按钮。查看您想要的 HTML 现在是否出现在结果文本框中。如果是,那么您的大部分问题现在都已解决。我对这项技术非常幸运。它应该可以解决延迟呈现的内容的任何问题,因此不会在实际源代码中以未混淆的形式出现。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线