scrapy 2.3 正則表達(dá)式

2021-06-03 15:50 更新

這個(gè) ?test()? 例如,當(dāng)xpath的 ?starts-with()? 或 ?contains()? 還不夠。

在列表項(xiàng)中選擇“class”屬性以數(shù)字結(jié)尾的鏈接的示例:

>>> 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? 本機(jī)不支持exslt正則表達(dá)式,因此 lxml 的實(shí)現(xiàn)使用了對(duì)python的鉤子 ?re? 模塊。因此,在xpath表達(dá)式中使用regexp函數(shù)可能會(huì)增加一點(diǎn)性能損失。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)