如何在 scrapy.selector.unified.SelectorList 上迭代使用 xpath?
How iteratively use xpath on a scrapy.selector.unified.SelectorList?
假设我有以下页面结构:
在该结构中,我有以下嵌套结构:
我写了
offers = response.xpath('//li[@class = "search-page__result"]')
尝试创建一个万无一失的列表。我相信这部分是成功的,因为如果我说
for offer in offers:
print(offer.get())
然后它将 HTML 小节作为字符串打印出来。
但是如果我说
for offer in offers:
features = offer.xpath('//ul[@class = "listing-key-specs"]')
features
的内容看起来好像我会使用 response
而不是 offer
。
有没有人指导我如何一次在结构的每个子部分上迭代使用 xpath?
编辑:我想添加我在回答问题之前找到的替代解决方案。正如 YohanObadia 所建议的here,下面的方法也可以工作:
for offer in offers:
features = Selector(text = offer.extract()).xpath('//ul[@class = "listing-key-specs"]')
//
表示您的上下文再次成为根。只需在斜杠前放一个点,上下文就提供了。
for offer in offers:
features = offer.xpath('.//ul[@class = "listing-key-specs"]')
解释了。
假设我有以下页面结构:
在该结构中,我有以下嵌套结构:
我写了
offers = response.xpath('//li[@class = "search-page__result"]')
尝试创建一个万无一失的列表。我相信这部分是成功的,因为如果我说
for offer in offers:
print(offer.get())
然后它将 HTML 小节作为字符串打印出来。
但是如果我说
for offer in offers:
features = offer.xpath('//ul[@class = "listing-key-specs"]')
features
的内容看起来好像我会使用 response
而不是 offer
。
有没有人指导我如何一次在结构的每个子部分上迭代使用 xpath?
编辑:我想添加我在回答问题之前找到的替代解决方案。正如 YohanObadia 所建议的here,下面的方法也可以工作:
for offer in offers:
features = Selector(text = offer.extract()).xpath('//ul[@class = "listing-key-specs"]')
//
表示您的上下文再次成为根。只需在斜杠前放一个点,上下文就提供了。
for offer in offers:
features = offer.xpath('.//ul[@class = "listing-key-specs"]')