【问题标题】:WebClient.DownloadString() Not Producing Exact HTMLWebClient.DownloadString() 不生成精确的 HTML
【发布时间】:2010-05-20 19:50:04
【问题描述】:

所以这就是交易。我正在为一个扫描所有产品页面并记录产品数据的网站创建一个蜘蛛机器人。我正在使用 C# 和 WebClient 库来下载 HTML 字符串。我要爬的网站必须是特制的,因为从 WebClient.DownloadString() 收到的 HTML 与我在浏览器上查看 HTML 源时获得的 HTML 不同。这似乎是故意的,因为我无法获得的唯一信息是价格。

有没有人知道这个问题的解决方法,或者任何人都可以解释发生了什么?谢谢。

【问题讨论】:

  • 如果我们能看到代码中出现了哪些差异,那将会有所帮助。例如,“查看源代码”向您展示了什么以及您的机器人向您展示了什么?
  • 您能否提供相关网站的网址?
  • 我个人会使用WebRequest / WebResponse 来检索详细信息。或者使用 DownloadData 并将byte[] 格式化为使用正确编码的字符串。

标签: c# .net asp.net webclient


【解决方案1】:

它可能是使用用户代理字符串来决定发送什么内容。示例here 展示了如何设置用户代理标头。

【讨论】:

  • OP 在这里,我能够确切地找出原因。显然,该网站使用 AJAX 功能来获取敏感数据。当我使用 WebClient.DownloadString() 进行屏幕抓取时,我得到了 HTML 文档,但我没有得到这个敏感信息,而是得到了一段 AJAX 应该在的地方。这有帮助吗?我将发布包含在 HTML 中的 AJAX 代码
  • 函数showProductDetails正在调用ajax,您需要查看该函数的源代码以了解如何抓取数据。
  • html文档中没有该函数
  • IT 必须在引用 javascript 文件中。查找
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多