scrapy 2.3 使用相對路徑

2021-06-03 13:52 更新

請記住,如果要嵌套選擇器并使用以開頭的xpath ?/? ,該xpath對文檔是絕對的,而不是相對于 ?Selector? 你是從打電話來的。

例如,假設(shè)您希望提取所有 ?<p>? 內(nèi)部元素 ?<div>? 元素。首先,你會得到所有 ?<div>? 元素:

>>> divs = response.xpath('//div')

首先,您可能會嘗試使用以下方法,這是錯誤的,因為它實際上提取了所有 ?<p>? 文檔中的元素,而不僅僅是其中的元素 ?<div>? 元素:

>>> for p in divs.xpath('//p'):  # this is wrong - gets all <p> from the whole document
...     print(p.get())

這是正確的方法(注意在 ?.//p? XPath):

>>> for p in divs.xpath('.//p'):  # extracts all <p> inside
...     print(p.get())

另一個常見的情況是提取所有直接 ?<p>? 兒童:

>>> for p in divs.xpath('p'):
...     print(p.get())

有關(guān)相對路徑的更多詳細(xì)信息,請參見 Location Paths XPath規(guī)范中的節(jié)。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號