如何解析HTML/XML并从中提取信息?


当前回答

是的,您可以使用simple_html_dom。然而,我已经使用simple_html_dom做了很多工作,特别是在web抓取方面,发现它太脆弱了。它做了基本的工作,但无论如何我都不推荐它。

我从未使用过卷发,但我学到的是,卷发可以更有效地完成这项工作,而且更结实。

请查看此链接:使用curl刮取网站

其他回答

我已经编写了一个通用XML解析器,可以轻松处理GB文件。它基于XMLReader,非常容易使用:

$source = new XmlExtractor("path/to/tag", "/path/to/file.xml");
foreach ($source as $tag) {
    echo $tag->field1;
    echo $tag->field2->subfield1;
}

下面是github repo:XmlExtractor

顺便说一下,这通常被称为屏幕刮擦。我为此使用的库是SimpleHTMLDomParser。

XML_HTMLMax相当稳定——即使不再维护它。另一种选择是通过HtmlTidy将HTML导入,然后用标准的XML工具解析它。

SimpleHtmlDom的第三方替代方案使用DOM而不是字符串解析:phpQuery、Zend_DOM、QueryPath和FluentDom。

我们以前已经为我们的需求创建了不少爬虫。最后,通常是简单的正则表达式做得最好。虽然上面列出的库对于创建它们的原因来说是很好的,但如果您知道自己在寻找什么,正则表达式是一种更安全的方法,因为您还可以处理无效的HTML/XTML结构,如果通过大多数解析器加载,则会失败。