2009-12-09 52 views
3

一个不错的HTML解析器发现这是http://simplehtmldom.sourceforge.net/但它未能奏效需要在PHP

extracting this page http://php.net/manual/en/function.curl-setopt.php 
and parse it to plain html, it failed and returned a partial html page 

这就是我想做的事, 进入一个HTML页面,并获得组件的个人(的内容所有div和p在一个层次结构中) 我喜欢simplehtmldom的特性,任何这样的解析器都是必需的,它对所有代码都很好(最好和最差)。

回答

5

我经常使用DOMDocument::loadHTML,这在一般情况下效果不错 - 我喜欢查询文档,一旦它们被加载为DOM,使用Xpath。不幸的是,我认为,在某些情况下,如果HTML页面真的很糟糕,可能会出现一些解析问题... 这就是当你开始理解尊重Web标准是一个好主意的时候。 。

+0

好,谁的人必须解析*其他人的*代码它是完全不相关的尊重网络标准的不:-) – Joey 2009-12-09 12:07:42

+1

@Johannes>确实;;但是如果你尝试解析其他人的HTML,那么有一天你或许会不得不生产HTML,而且,那一天,记住解析蹩脚HTML的困难可能会鼓励你编写干净的HTML (跳跃......) – 2009-12-09 12:10:30

0

大厦帕斯卡·马丁的反应...

我用卷曲和XPATH的组合。以下是我在其中一个课程中使用的功能。

​​

然后,您可以使用evaluate解析文档结构和提取信息,你想

$resultDom = $this->xpath->evaluate("//span[@id='headerResults']/strong"); 
$this->results = $resultDom->item(0)->nodeValue;