2011-12-08 38 views
0

我很想轮询一个不断更新动态数据的网页,并抓取这些数据。我不想每秒重新加载整个页面。有没有办法在不重新加载页面的情况下获取这些数据?在C#.NET中,有没有办法从ajax网页上抓取动态数据?

我正在为演示目的编写一个控制台应用程序。

非常感谢!

+0

你有没有试过模拟一个真正的浏览器的行为,即..进行AJAX调用,并解析结果? –

+3

定义“动态数据”。页面是否返回在其服务器上经常更新的静态内容,或者页面是否有大量JavaScript/AJAX实时更新​​其数据? – David

+0

谢谢你们 - 这就像股票代码。我没有触发更新 - 他们只是定期发生。我一直在使用PhantomJS(无头WebKit浏览器),但更喜欢C#解决方案。 –

回答

0

不是。对于初学者来说,HTTP是无状态的。当您执行HTTP请求时,即使使用动态例程生成静态数据,您也会始终获取静态数据。

听起来你听不到用于以任何其他方式构建页面的数据(即直接链接到数据库,Web服务等) - 如果你可以,你不会被网页抓取。

即使你能做到这一点,也不会有太大的区别。您仍然必须将现在与远程服务的数据进行比较。如果没有某种推送通知,你在投票,如果你在投票,是的,你必须时刻检查。

+0

谢谢保罗 - 我正在告诉上面的人,我一直在使用PhantomJS(一个无头网页浏览器)来做到这一点,结果混杂。我不是一个熟练的Javascript开发人员,并希望在C#中完成此任务。我认为浏览器插件可能是更好的方法。 –

0

您可以使用头数据返回到检查的最后修改日期:

HttpWebResponse.LastModified 

...但是,它完全由服务器来设定这个日期 - 因此它可能会或可能不准确。

防止手动抓取的另一种方法是简单地获取返回数据的校验和。您可以将其存储起来,并将标记的总和与您存储的内容进行比较。

+0

感谢乔治 - 我不确定,但似乎我仍然需要每秒重新加载页面?我认为编写浏览器插件可能是更好的方法,除非William的HTML应用程序(HTA)的想法有效。 –

0

您可能会考虑将应用程序编写为HTML应用程序(HTA)。
这为您提供了完整的浏览器功能,以及挂钩事件并在另一个窗口中显示数据或写入磁盘文件的功能。

+0

谢谢威廉!你有没有链接 - 我从来没有听说过。听起来很有希望。干杯! –

相关问题