W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
scrapy選擇器還提供一個非常遺漏的xpath擴(kuò)展函數(shù) has-class 它會回來 True 對于具有所有指定HTML類的節(jié)點(diǎn)。
對于以下HTML::
<p class="foo bar-baz">First</p>
<p class="foo">Second</p>
<p class="bar">Third</p>
<p>Fourth</p>
你可以這樣使用它:
>>> response.xpath('//p[has-class("foo")]')
[<Selector xpath='//p[has-class("foo")]' data='<p class="foo bar-baz">First</p>'>,
<Selector xpath='//p[has-class("foo")]' data='<p class="foo">Second</p>'>]
>>> response.xpath('//p[has-class("foo", "bar-baz")]')
[<Selector xpath='//p[has-class("foo", "bar-baz")]' data='<p class="foo bar-baz">First</p>'>]
>>> response.xpath('//p[has-class("foo", "bar")]')
[]
所以XPath //p[has-class("foo", "bar-baz")] 大致相當(dāng)于CSS p.foo.bar-baz . 請注意,在大多數(shù)情況下,它的速度較慢,因為它是一個純Python函數(shù),可以為問題中的每個節(jié)點(diǎn)調(diào)用,而CSS查找被轉(zhuǎn)換為xpath,因此運(yùn)行效率更高,因此性能方面,它的使用僅限于不容易用css選擇器描述的情況。
Parsel還簡化了添加自己的xpath擴(kuò)展。
parsel.xpathfuncs.
set_xpathfunc
(fname, func)[源代碼]注冊要在xpath表達(dá)式中使用的自定義擴(kuò)展函數(shù)。
函數(shù) func
注冊于 fname
將為每個匹配節(jié)點(diǎn)調(diào)用標(biāo)識符,并將其傳遞給 context
參數(shù)以及從相應(yīng)的xpath表達(dá)式傳遞的任何參數(shù)。
如果 func
是 None
,將刪除擴(kuò)展功能。
查看更多 in lxml documentation .
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: