scrapy 2.3 選擇元素屬性

2021-06-03 10:55 更新

有幾種方法可以獲得屬性的值。首先,可以使用XPath語法:

>>> response.xpath("http://a/@href").getall()
['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html']

xpath語法有幾個優(yōu)點:它是標準的xpath特性,并且 @attributes 可用于xpath表達式的其他部分-例如,可以按屬性值篩選。

scrapy還提供了對css選擇器的擴展 (::attr(...) )它允許獲取屬性值:

>>> response.css('a::attr(href)').getall()
['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html']

除此之外,還有 .attrib 選擇器的屬性。如果您喜歡在Python代碼中查找屬性,而不使用xpath或CSS擴展,則可以使用它:

>>> [a.attrib['href'] for a in response.css('a')]
['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html']

此屬性在SelectorList上也可用;它返回一個字典,其中包含第一個匹配元素的屬性。當選擇器預(yù)期給出單個結(jié)果時(例如,當按元素ID選擇時,或在頁面上選擇唯一元素時),使用它非常方便:

>>> response.css('base').attrib
{'href': 'http://example.com/'}
>>> response.css('base').attrib['href']
'http://example.com/'

.attrib 空SelectorList的屬性為空:

>>> response.css('foo').attrib
{}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號