gpt4 book ai didi

python - 如何访问 Item Pipeline Scrapy 中的请求对象

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:02 25 4
gpt4 key购买 nike

我有一个项目管道来处理价格。我在此管道中处理项目时遇到错误。但是 scrapy error 并不能说明是哪个 url 产生了错误。有什么办法可以访问管道内的请求对象

def process_item(self, item, spider):
"""
:param self:
:param item:
:param spider:
"""
print dir(spider) # No request object here...
quit()
if not all(item['price']):
raise DropItem

item['price']['new'] = float(re.sub(
"\D", "", item['price']['new']))
item['price']['old'] = float(re.sub(
"\D", "", item['price']['old']))
try:
item['price']['discount'] = math.ceil(
100 - (100 * (item['price']['new'] /
item['price']['old'])))
except ZeroDivisionError as e:
print "Error in calculating discount {item} {request}".format(item=item, request=spider.request) # here I want to see the culprit url...
raise DropItem

return item

最佳答案

您不能从 ItemPipeline 中访问响应(和 response.url),但我认为更简单的解决方案是添加一个临时的 url 字段当你产生元素时分配,比如:

yield {...
'url': response.url,
...}

可以在管道内轻松访问 url。

关于python - 如何访问 Item Pipeline Scrapy 中的请求对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47268325/

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