PHP CSS选择器库?

时间:2008-11-04 02:17:43

标签: php screen-scraping css-selectors

是否有允许我使用CSS选择器查询XHTML文档的PHP类/库?如果我能以某种方式使用CSS选择器(jQuery已经破坏了我!),我需要抓取一些页面以获取非常容易访问的数据。有什么想法吗?

8 个答案:

答案 0 :(得分:41)

进一步搜索谷歌后(初步结果不是很有帮助),似乎实际上有一个Zend Framework库以及其他一些:

答案 1 :(得分:9)

XPath是访问XML(和XHTML)节点的一种相当标准的方式,并且提供比CSS更高的精度。

答案 2 :(得分:6)

另一个:
http://querypath.org/

答案 3 :(得分:6)

一个伟大的是symfony 2的一个组成部分,CssSelector\Parser­Introduction。它将CSS选择器转换为XPath表达式。看看=)

Source code

答案 4 :(得分:5)

对于jQuery用户,最有趣的可能是 jQuery到PHP的端口,即 phpQuery 。几乎图书馆的所有部分都已移植。此外,它还包含 WebBrowser 插件,可用于Web Scraping整个站点的路径/进程(例如,登录后访问可用的数据)。它只是模拟服务器上的Web浏览器(事件和cookie)。最新版本对XML 命名空间和CSS3 “|”选择器进行了实验性支持。

答案 5 :(得分:3)

我最终使用了PHP Query Lite,这很简单,而且我只需要它。

答案 6 :(得分:2)

对于文档解析,我使用DOM。如果你知道标签名称(在这个例子中是“div”),这可以很容易地解决你的问题:

 $doc = new DOMDocument();
 $doc->loadHTML($html);

 $elements = $doc->getElementsByTagName("div");
 foreach ($elements as $e){
  if ($e->getAttribute("class")!="someclass") continue;

  //its a div.classname
 }

不确定DOM是否允许您一次获取文档的所有元素......您可能必须进行树遍历。

答案 7 :(得分:1)

我写了我的,基于Mootools CSS选择器引擎http://selectors.svn.exyks.org/。它依赖于simplexml扩展能力(因此,它是只读的)