32

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

4

8 回答 8

44

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

于 2008-11-04T02:19:38.053 回答
9

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

于 2008-11-04T02:23:14.660 回答
6

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

于 2010-06-20T00:58:42.047 回答
6

一个很棒的是 symfony 2 的一个组件,CssSelector\Parser Introduction 。它将 CSS 选择器转换为 XPath 表达式。看看 =)

源代码

于 2010-07-12T09:13:54.767 回答
5

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

于 2009-01-22T16:00:48.227 回答
3

我最终使用了PHP Query Lite,它非常简单并且拥有我所需要的一切。

于 2011-02-08T19:08:34.993 回答
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 是否允许您一次获取文档的所有元素……您可能需要进行树遍历。

于 2008-11-19T06:22:36.973 回答
1

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

于 2009-07-28T14:27:38.403 回答