是否有允许我使用CSS选择器查询XHTML文档的PHP类/库?如果我能以某种方式使用CSS选择器(jQuery已经破坏了我!),我需要抓取一些页面以获取非常容易访问的数据。有什么想法吗?
答案 0 :(得分:41)
进一步搜索谷歌后(初步结果不是很有帮助),似乎实际上有一个Zend Framework库以及其他一些:
答案 1 :(得分:9)
XPath是访问XML(和XHTML)节点的一种相当标准的方式,并且提供比CSS更高的精度。
答案 2 :(得分:6)
答案 3 :(得分:6)
一个伟大的是symfony 2的一个组成部分,CssSelector\ParserIntroduction。它将CSS选择器转换为XPath表达式。看看=)
答案 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扩展能力(因此,它是只读的)