scrapy 2.3 使用相对路径
请记住,如果要嵌套选择器并使用以开头的xpath /
,该xpath对文档是绝对的,而不是相对于 Selector
你是从打电话来的。
例如,假设您希望提取所有 <p>
内部元素 <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())
有关相对路径的更多详细信息,请参见 Location Paths XPath规范中的节。