【问题标题】:Scrapy [scrapy.core.scraper] ERROR: Error processingScrapy [scrapy.core.scraper] 错误:错误处理
【发布时间】:2022-11-19 12:47:44
【问题描述】:

我正在尝试使用 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}

追溯(最近一次通话): 文件“/Users/XY/.pyenv/versions/3.10.7/lib/python3.10/site-packages/twisted/internet/defer.py”,第 892 行,在 _runCallbacks current.result = callback( # type: ignore[misc] 文件“/Users/XY/.pyenv/versions/3.10.7/lib/python3.10/site-packages/scrapy/utils/defer.py”,第 285 行,f 返回 deferred_from_coro(coro_f(*coro_args, **coro_kwargs)) 文件“/Users/XY/Library/CloudStorage/Creative/project/pipelines.py”,第 29 行,process_item self.current.execute("""插入平面(内容、标签、作者)值(%s)""", ( psycopg2.errors.InFailedSqlTransaction:当前事务中止,命令被忽略直到事务块结束

几个小时以来,我一直在尝试寻找解决方案,但一无所获。

任何想法?

试图将抓取的数据从 scrapy 传递到 postgresql 数据库,但预计会出现错误。

【问题讨论】:

    标签: python postgresql scrapy


    【解决方案1】:

    可能发生的情况是您的其中一项具有 None 值,而 postgresql 不接受 None 作为值。

    尝试将您的管道 process_item() 更改为:

    def process_item(self, item, spider):
        print(item)
        print(item["flat"])
        if item["flat"]:
            self.current.execute(
               """insert into flats(content, tags, author) values(%s)""", 
               (item["flat"],)
             )
             self.connection.commit()
        return item
    

    【讨论】:

    • 嗨,不幸的是,这没有帮助..仍然得到同样的错误.. @Alexander
    • @CoderNoob 添加我在回答中包含的两个打印语句并告诉我它们打印的内容。它们应该在代码抛出错误之前打印。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多