如何在 spider 上重用 yield
How to reuse yield on spider
我是 Scrapy 的新手,也是 python 的新手。
我在蜘蛛中有多个 yield
具有相同的 body。
yield {
'url' : response.url,
'html' : response.css('body').extract(),
'title': response.css('title::text').extract_first(),
}
每个 yield
都在不同的解析方法中,但我只想写一次 yield
并重用它。
我首先尝试了一种方法,将响应作为参数并 returns yield
。
然后我从 parse 方法中调用了那个方法,但是 Scrapy 声称我不能 return yield
.
看起来你想要这样的东西
item = {
'url' : response.url,
'html' : response.css('body').extract(),
'title': response.css('title::text').extract_first(),
}
yield item
yield item
yield item
您可以为该代码定义一个方法,例如:
def parse_item(self, response):
yield {
'url' : response.url,
'html' : response.css('body').extract(),
'title': response.css('title::text').extract_first(),
}
并使用 yield from
从另一个方法调用它。例如:
def another_method(self, response)
# ...
yield from self.parse_item(response)
我是 Scrapy 的新手,也是 python 的新手。
我在蜘蛛中有多个 yield
具有相同的 body。
yield {
'url' : response.url,
'html' : response.css('body').extract(),
'title': response.css('title::text').extract_first(),
}
每个 yield
都在不同的解析方法中,但我只想写一次 yield
并重用它。
我首先尝试了一种方法,将响应作为参数并 returns yield
。
然后我从 parse 方法中调用了那个方法,但是 Scrapy 声称我不能 return yield
.
看起来你想要这样的东西
item = {
'url' : response.url,
'html' : response.css('body').extract(),
'title': response.css('title::text').extract_first(),
}
yield item
yield item
yield item
您可以为该代码定义一个方法,例如:
def parse_item(self, response):
yield {
'url' : response.url,
'html' : response.css('body').extract(),
'title': response.css('title::text').extract_first(),
}
并使用 yield from
从另一个方法调用它。例如:
def another_method(self, response)
# ...
yield from self.parse_item(response)