我正在尝试使用Scrapy从一个网站上抓取一些数据。我正在使用以下代码行抓取数据:
`
def parse(self, response):
data = json.loads(response.body)
flat = FlatItem()
for item in data["_embedded"]["estates"]:
flat['flat'] = item['price']
yield flat
而FlatItem()包含一个类似下面的字段:
from scrapy.item import Item, Field
class FlatItem(Item):
flat = Field()
然后,我尝试将其粘贴到postgresql数据库中,使用如下命令:
def process_item(self, item, spider):
self.current.execute("""insert into flats(content, tags, author) values(%s)""", (
item["flat"],
))
self.connection.commit()
return item
`
不幸的是,当我试图运行爬行器时,它给了我一个如下所示的异常:
2022-11-17 11:32:07 [scrapy.core.scraper] ERROR: Error processing {'flat': 3299000}
回溯(最近的呼叫排在最后):文件“/用户/XY/.pyenv/版本/3.10.7/lib/python3.10/站点包/twisted/internet/defer.py”,第892行,在运行中回调当前。结果=回调(#类型:第285行,在f中返回deferred_from_科罗(coro_f(*coro_args,**coro_kwargs))pipelines.py第29行,在process_item self.current中执行(“"“插入平面(内容、标签、作者)值(%s)""",(psycopg2.errors.InFailedSqlTransaction:当前事务被中止,忽略命令直到事务块结束
我找了几个小时的答案,但一无所获。
你知道吗?
尝试将scrappy中的数据传递到postgresql数据库,但预期会发生错误。
1条答案
按热度按时间jtw3ybtb1#
可能发生的情况是,您的某个项具有
None
值,而postgresql不接受None作为值。尝试将管道
process_item()
更改为: