3

我已经使用 System.net.Webclient 类将代码放在一起从网页中提取源代码,然后我使用字符串搜索来获取特定信息。这本身可以正常工作,但我的问题是源代码每隔几秒就会更改一次,我希望收到的数据也相应更改。我知道我可以简单地设置一个循环来重复这个过程,但不幸的是,我当前的代码需要整整 2.7 秒才能完成,我想避免这么大的延迟时间。另外,如果可能的话,我想避免向网页发送垃圾邮件。我正在考虑一个保持打开状态的流读取,这样就不必发送多个请求,但我不完全确定如何去做......

总而言之,有没有一种方法可以让我使用 System.Net 命名空间以既快速又避免向网站发送请求的垃圾邮件的方式从网站中提取更新信息?

4

1 回答 1

1

恐怕HTTP协议不适应您的实时数据刷新要求。除了定期轮询 HTTP 请求之外,您无法知道服务器上的数据是否更改并获取这些新数据。

例如,WebSocket技术更适合那些场景。当然,数据提供者必须实现它,以便客户端可以订阅此实时提要。

还有另一种通过 HTTP 协议实现此功能的方法。它使用 iframe 来实现长轮询。这是一个例子。这个想法是服务器使用分块传输编码并将连续的数据流发送到套接字。客户端订阅此流,并且能够在服务器上发生更改时收到通知。再一次,它是一项必须由服务器端实现的技术,以便您作为客户端可以利用它。

如果服务器提供的只是通过 HTML 页面提供的数据,那么您注定要通过 HTTP 请求敲击该服务器来进行屏幕抓取,直到您的 IP 地址被列入黑名单并拒绝访问。

于 2012-06-15T18:45:40.250 回答