【问题标题】:extract a HTML data without downloading whole webpage在不下载整个网页的情况下提取 HTML 数据
【发布时间】: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


【解决方案1】:

男人,

由于 HTML 协议的语言是解释而不是编译的,因此浏览器或任何像浏览器一样工作的类实现都需要从服务器下载整个内容。您可以阅读How Browsers WorkSurfin' Safari 了解更多信息。我相信没有一种有效的方法可以按照您的要求进行操作,但是,在我看来,一种非常有效的方法是按照mellamokb 所说的那样做。但是,它仍然会下载整个内容。

[]的

【讨论】:

    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2011-09-22
    • 2019-07-14
    • 2013-11-21
    相关资源
    最近更新 更多