gpt4 book ai didi

python - Scrapy 不能同时使用 return 和yield

转载 作者:行者123 更新时间:2023-12-01 05:52:02 29 4
gpt4 key购买 nike

这是我的代码

def parse(self, response):
soup = BeautifulSoup(response.body)
hxs = HtmlXPathSelector(response)
sites = hxs.select('//div[@class="row"]')
items = []

for site in sites[:5]:
item = TestItem()
item['username'] = "test5"
request = Request("http://www.example.org/profile.php", callback = self.parseUserProfile)
request.meta['item'] = item
**yield item**

mylinks= soup.find_all("a", text="Next")
if mylinks:
nextlink = mylinks[0].get('href')
yield Request(urljoin(response.url, nextlink), callback=self.parse)

def parseUserProfile(self, response):
item = response.meta['item']
item['image_urls'] = "test3"
return item

现在我的上述内容可以工作,但我没有获得 item['image_urls'] = "test3"

的值

它为空

现在如果使用返回请求而不是yield item

然后出现错误,无法将 return 与生成器一起使用

如果我删除这一行

yield 请求(urljoin(response.url, nextlink),callback=self.parse)然后我的代码工作正常,我可以得到 image_urls 但我无法点击链接

有什么办法让我可以使用返回请求一起产生以便我获得item_urls

最佳答案

我不太明白你的问题,但我在你的代码中发现一个问题:

def parseUserProfile(self, response):
item = response.meta['item']
item['image_urls'] = "test3"
return item

解析回调返回值应该是序列,因此您应该return [item]或将回调转换为生成器:

def parseUserProfile(self, response):
item = response.meta['item']
item['image_urls'] = "test3"
yield item

关于python - Scrapy 不能同时使用 return 和yield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13900877/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com