gpt4 book ai didi

c# - 如何在页面加载后抓取包含使用 JavaScript 更新的数据的页面?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:44 24 4
gpt4 key购买 nike

我正在尝试抓取页面。一切正常,但是更新值时,页面的源代码一分钟还是一样的。即使当我刷新互联网连接速度较慢的页面时,首先我会看到旧数据,并且只有在页面完全加载后才会显示当前值。我猜 javascript 会更新它们。但是它仍然需要以某种方式下载它们。

如何获取当前值?

我用 C# 编写程序,但如果您有一些想法/建议/示例,语言并不重要。

谢谢。

最佳答案

你是对的 - javascript 可能在加载后更新数据。

我可以想到三种方法来处理这个问题:

  1. 使用网络浏览器控件 - 我猜您正在使用 HttpWebRequest 对象从站点检索值。如果您需要让 javascript 运行,这将不起作用。您可以使用 webbrowser 控件,让 javascript 运行并从 DOM 中检索值。我唯一不喜欢这种方法的地方是它感觉像是一种 hack,而且对于产品应用程序来说可能太笨重了。您还需要知道何时读取 DOM 的内容(更新可能在后台进行)。谷歌“C# WebBrowser Control Read DOM Programmatically”或者您可以阅读更多相关信息 here .

  2. 我个人更喜欢这个而不是以前的,但它并不总是有效。首先,您需要从 firebug 或其他工具检查网站,并查看从后台调用了哪些 url。例如,该网站正在使用 javascript 更新股票报价。最有可能的是,它使用异步请求从 Web 服务中检索更新的信息。使用firebug ,您可以在 NET>XHR 下查看。现在是困难的部分。好吧,看看请求和返回的值。这个想法是,您可以尝试自己检索值并解析内容——这比抓取页面要容易得多。问题是,您需要进行一些逆向工程才能使其正确。您可能还会遇到身份验证和/或加密方面的问题。

  3. 最后也是我最喜欢的解决方案是直接询问 [您正在抓取的网站的] 所有者。

关于c# - 如何在页面加载后抓取包含使用 JavaScript 更新的数据的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6048317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com