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规范中的节。