scrapy 2.3 正则表达式

2021-06-03 15:50 更新

这个 ​test()​ 例如,当xpath的 ​starts-with()​ 或 ​contains()​ 还不够。

在列表项中选择“class”属性以数字结尾的链接的示例:

>>> from scrapy import Selector
>>> doc = """
... <div>
...     <ul>
...         <li class="item-0"><a href="link1.html">first item</a></li>
...         <li class="item-1"><a href="link2.html">second item</a></li>
...         <li class="item-inactive"><a href="link3.html">third item</a></li>
...         <li class="item-1"><a href="link4.html">fourth item</a></li>
...         <li class="item-0"><a href="link5.html">fifth item</a></li>
...     </ul>
... </div>
... """
>>> sel = Selector(text=doc, type="html")
>>> sel.xpath('//li//@href').getall()
['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']
>>> sel.xpath('//li[re:test(@class, "item-\d$")]//@href').getall()
['link1.html', 'link2.html', 'link4.html', 'link5.html']

警告

C库 ​libxslt​ 本机不支持exslt正则表达式,因此 lxml 的实现使用了对python的钩子 ​re​ 模块。因此,在xpath表达式中使用regexp函数可能会增加一点性能损失。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号