我已经使用System.net.Webclient类汇总了代码,从网页中提取源代码,然后使用字符串搜索来获取特定信息。这本身工作正常,但我的问题是源代码每隔几秒就会改变一次,我希望我收到的数据也会相应改变。我知道我可以简单地设置一个循环让这个过程重复,但遗憾的是我的当前代码需要2.7秒完成,我想避免这个大的延迟时间。此外,我希望尽可能避免使用请求向网页发送垃圾邮件。我正在考虑一个保持开放的流线传输,因此不需要发送多个请求,但我不能完全确定如何解决这个问题...
总而言之,我是否有办法以快速的方式使用System.Net命名空间从网站更新信息,并避免通过请求向网站发送垃圾邮件?
答案 0 :(得分:1)
我担心HTTP协议不适合您的实时数据刷新要求。除了定期轮询HTTP请求之外,您无法知道服务器上的数据是否已更改并获取此新数据。
例如,WebSocket技术更适合这些场景。当然,数据提供者必须实现它,以便客户可以订阅此实时源。
还有另一种通过HTTP协议实现此功能的方法。它使用iframe来实现long polling。这是一个example。这个想法是服务器使用分块传输编码并将连续的数据流发送到套接字。客户端订阅此流,并且能够收到服务器上发生的更改的通知。再次,这是一项必须由服务器端实现的技术,以便您作为客户端可以利用它。
如果服务器提供的所有内容都是通过HTML页面提供的数据,则注定要通过使用HTTP请求锤击此服务器进行屏幕抓取,直到您的IP地址被列入黑名单并被拒绝访问。