CssSelector组件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
CssSelector组件
CssSelector组件将CSS选择器转换为XPath表达式。
安装
你可以用两种不同的方式安装组件:
- 通过Composer安装(
ob娱乐下载symfony / css选择器
在Packagist); - 使用官方Git存储库(https://github.com/ob娱乐下载symfony/css-selector).
然后,要求供应商/ autoload.php
文件以启用Composer提供的自动加载机制。否则,您的应用程序将无法找到这个Symfony组件的类。ob娱乐下载
使用
为什么使用CSS选择器?
在解析HTML或XML文档时,迄今为止最强大的方法是XPath。
XPath表达式非常灵活,因此几乎总是有一个XPath表达式可以找到您需要的元素。不幸的是,它们也可能变得非常复杂,学习曲线也很陡峭。即使是常见的操作(例如查找具有特定类的元素)也可能需要冗长而笨拙的表达式。
许多开发人员——尤其是web开发人员——更喜欢使用CSS选择器来查找元素。和在样式表中工作一样,CSS选择器在JavaScript中与querySelectorAll
函数和流行的JavaScript库,如jQuery, Prototype和MooTools。
CSS选择器没有XPath强大,但是更容易编写、阅读和理解。由于CSS选择器功能较弱,几乎所有的CSS选择器都可以转换为XPath的等效选择器。然后,可以将这个XPath表达式与使用XPath查找文档中的元素的其他函数和类一起使用。
CssSelector组件
该组件的唯一目标是将CSS选择器转换为XPath等价物:
1 2 3
使用ob娱乐下载\组件\CssSelector\CssSelector;var_dump (CssSelector::toXPath ('div.item > h4 > a'));
输出如下:
1
descent -or-self::div[@class and contains(concat(' ',normalize-space(@class), ' '), ' item ')]/h4/a
你可以用这个表达,例如,DOMXPath或SimpleXMLElement查找文档中的元素。
提示
的爬虫:过滤器()方法使用CssSelector组件根据CSS选择器字符串查找元素。看到DomCrawler组件欲知详情。
CssSelector组件的限制
并非所有的CSS选择器都可以转换为XPath等价物。
有几个CSS选择器只在web浏览器上下文中有意义。
- 链路状态选择器:
:链接
,:参观
,:目标
- 基于用户操作的选择器:
:徘徊
,:专注
,:主动
- ui状态选择器:
:无效
,:不确定
(然而,:启用
,:禁用
,:检查
而且:不
是可用的)
伪元素(:在
,:在
,:一线
,:首字母
)不受支持,因为它们选择文本的部分而不是元素。
目前还不支持以下几个伪类:
*: first-of-type
,*: last-of-type
,*: nth-of-type
,*: nth-last-of-type
,*: only-of-type
.(它们与元素名称一起工作(例如:李:first-of-type
),但不与*
.