scrapy 2.3 使用相对路径

2021-06-03 13:52 更新

请记住,如果要嵌套选择器并使用以开头的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规范中的节。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号