【发布时间】:2012-08-05 17:34:47
【问题描述】:
如何在不下载整个网页 HTML 的情况下从网页中提取 HTML 表的数据?
我在 Delphi XE2 中使用 TWebBrowser 和 TEmbededWB 来加载页面,然后获取 Table 元素并对其进行解析。但是网页很重,在我的循环中(大约 60 秒)我无法正确抓取数据。
问候
【问题讨论】:
-
你可以通过流下载它,丢弃你不需要的位,这比将整个东西加载到内存中效率更高。但是,除非服务器支持,否则无法仅请求特定位,而 Web 服务器通常不支持。
-
即便如此,您也需要知道表格的开始和结束字节在哪里。
-
如何通过流媒体下载?我该如何解析它?是不是我可以用MSHTML解析它的htmldocument?
-
您的最终用户是否也需要查看该网页?如果没有,请使用 Indy HTTP Client (TIdHttp) 组件并执行 get 或 post。这将以流的形式提供给您,而无需浏览器解析和呈现 HTML 的开销。
-
Synapse 也是不错的 HTTP 库。你的问题不清楚。什么叫网页?只有根 HMTL 页面?或数百个文件、html 和 css 样式、js 程序、flash 广告和 html 子帧、音乐和视频,还有谁知道呢? HTTP 协议只允许您下载文件的一部分,从字节#12345 到字节#54321,但是 1:并非所有服务器都允许这样做,以及 2:您现在如何在不下载页面的情况下需要哪些字节?因此,您仍然需要下载主 HMTL 文件。但您可以避免下载全部或大部分 aux 文件
标签: html delphi browser extract indy