5

你知道 Delphi 的网页抓取库吗?喜欢 Beautiful Soup 或 Scrapy for Python 吗?

4

2 回答 2

11

好吧,这不是针对 Delphi,而是针对 FreePascal,因为我没有最近的 Delphi 版本,但是它们之间的移植应该不是那么困难。

无论如何,我的Internet 工具可能是目前最好的 Pascal 网络抓取库。

例如,您可以打印页面上的所有链接:

uses simpleinternet, xquery;

var a: IXQValue;
begin
  for a in process('http://stackoverflow.com', '//a/@href') do
    writeln(a.toString);
end.

它们独立于平台;完全支持 XPath 2、XQuery、CSS 3 选择器(这些选择器没有经过很好的测试,无论如何 XPath 更好)和模式匹配;解析xml和html;并通过http和https下载。

于 2013-02-04T19:05:05.717 回答
1

使用 TWebBrowser 组件加载页面后,查询 IHTMLDocument2 接口的 TWebBrowser.Document 属性,然后您可以枚举元素。

您可以 getElementsById、getElementsByTagName、getElementsByName,例如:

var
  Elem: IHTMLElement;
begin
   Elem := GetElementById(WebBrowser1.Document, 'myid') as IHTMLElement;
end;

或获取所有 HTML 文本并使用您想要的任何方式,例如:

sourceHTML := WebBrowser.Document as IHTMLDocument2;
sourceHTML.body.innerHTML;
于 2019-01-23T19:04:56.807 回答