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

我试图刮一页.一切都很好,但是当值更新时,页面的代码仍然是一分钟的相同.即使我刷新一个网速较慢的网页,我首先看到的是旧数据,只有在页面获得满载后才会显示当前值.

我想
javascript会更新它们.但它仍然必须以某种方式下载它们.

我如何获得当前值?

我用C#编写我的程序,但如果你有一些想法/建议/例子,语言并不重要.

谢谢.

最佳答案 你说得对 – javascript可能在加载后更新数据.

我可以想到三种方法来解决这个问题:

>使用webbrowser控件 – 我猜您使用HttpWebRequest对象从站点检索值.如果您需要让javascript运行,这将无效.您可以使用webbrowser控件,让javascript运行并从DOM中检索值.我唯一不喜欢这种方法的是它感觉像是一个黑客,可能对于prod应用来说太笨重了.您还需要知道何时读取DOM的内容(更新可能在后台进行).谷歌“C#WebBrowser控件以编程方式读取DOM”或者您可以阅读有关该here的更多信息.
>我个人比以前更喜欢这个,但它不会一直有效.首先,您需要从firebug或其他东西检查网站,并查看从后台调用哪些网址.比如说网站正在使用javascript更新股票报价.最有可能的是,它使用异步请求从Web服务中检索更新的信息.使用firebug,您可以在NET> XHR下查看.现在是困难的部分.好吧,看看请求和返回的值.我们的想法是,您可以尝试检索自己的值并解析内容 – 这比抓取页面要容易得多.问题是,你需要做一些逆向工程才能做到正确.您可能还会遇到身份验证和/或加密问题.
>最后,我最喜欢的解决方案是直接询问[您正在抓取的网站的所有者].

点赞