用HtmlP进行delphihtml解析

用HtmlP进行delphihtml解析,delphi,html-parsing,delphi-xe3,html-parser,Delphi,Html Parsing,Delphi Xe3,Html Parser,我正在尝试解析html文件,以便从表中提取数据。 所以我做了一些谷歌魔术,最后在这里提出了一个类似的问题 在这个问题上,他们建议使用HTMLP来解析html。所以我下载了这些装置并试用了一下 这很有效,但我想我遗漏了一些东西。 我完全不知道如何从元素中获取实际文本 我查了资料来源,但找不到这方面的任何信息。所以我希望这里有人知道答案 提前谢谢 编辑 应要求: 我试图获取的数据已找到 我想获取这些数据,并将每一行转换为一个对象,该对象将被存储,以便我可以比较不同的做法、资格和种族。您的代码存在问题

我正在尝试解析html文件,以便从表中提取数据。
所以我做了一些谷歌魔术,最后在这里提出了一个类似的问题

在这个问题上,他们建议使用HTMLP来解析html。所以我下载了这些装置并试用了一下

这很有效,但我想我遗漏了一些东西。 我完全不知道如何从元素中获取实际文本

我查了资料来源,但找不到这方面的任何信息。所以我希望这里有人知道答案

提前谢谢

编辑 应要求: 我试图获取的数据已找到

我想获取这些数据,并将每一行转换为一个对象,该对象将被存储,以便我可以比较不同的做法、资格和种族。

您的代码存在问题,您可以在本q中恢复该代码,问题在于:

for i:=0 to doc.body.all.length-1 do
执行此操作时,将发生无效的变量操作。以下是我用来调查的代码:

procedure GetTable2(FSource : TStrings);
var
  Doc : IHtmlDocument2;
  Body : IHtmlElement;
  All : IHtmlElementCollection;
begin
  Doc := coHTMLDocument.Create as IHTMLDocument2;
  Doc.Write(PSafeArray(FSource.Text));
  Doc.Close;
  Assert(Doc <> Nil);
  Body := Doc.body;
  Assert(Body <> Nil);
  All := Body.All as IHtmlElementCollection;
  Assert(All <> Nil);
  Assert(All.Length <> 0);
end;
在尝试加载任何内容之前,例如通过调用其.Write方法。Fwiw,当使用TWebBrowser的Silent属性为True时,可以执行类似的操作

顺便说一句,如果您试图解析表以获取数据,您可能想看看我前面的回答:


您的代码存在以下问题,请在本q中重新说明:

for i:=0 to doc.body.all.length-1 do
执行此操作时,将发生无效的变量操作。以下是我用来调查的代码:

procedure GetTable2(FSource : TStrings);
var
  Doc : IHtmlDocument2;
  Body : IHtmlElement;
  All : IHtmlElementCollection;
begin
  Doc := coHTMLDocument.Create as IHTMLDocument2;
  Doc.Write(PSafeArray(FSource.Text));
  Doc.Close;
  Assert(Doc <> Nil);
  Body := Doc.body;
  Assert(Body <> Nil);
  All := Body.All as IHtmlElementCollection;
  Assert(All <> Nil);
  Assert(All.Length <> 0);
end;
在尝试加载任何内容之前,例如通过调用其.Write方法。Fwiw,当使用TWebBrowser的Silent属性为True时,可以执行类似的操作

顺便说一句,如果您试图解析表以获取数据,您可能想看看我前面的回答:


你能至少发布你试图解析的实际html以及你想要达到的结果吗?@whosrdaddy我添加了更多信息。你能至少发布你试图解析的实际html以及你想要达到的结果吗?@whosrdaddy我添加了更多信息。非常感谢你发现问题并解释它非常感谢。不确定,所以我会自动通知你,但以防万一,这只是想让你知道,我在回答中提到了如何让IHtmlDocument2对象在JavaScript错误的情况下加载网页。非常感谢您发现问题并正确解释:)非常感谢。不确定,因此将自动通知您,但以防万一,这只是为了让您知道,我在回答中提到了如何让IHtmlDocument2对象加载网页,尽管存在JavaScript错误。