You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy配置多Pipeline分类型处理Item时触发NameError问题求助

Scrapy Pipeline NameError 问题排查与修复

错误触发原因

你代码中的核心问题集中在pipelines.py文件,具体如下:

  • 类继承错误:Scrapy Pipeline 不需要继承自定义的Item类,你错误地让ProjectlistPipeline继承ProjectItem、ProjectPipeline继承ProjectDetails,导致类初始化时导入链异常,触发ProjectItem未定义的NameError。
  • 缩进逻辑错误:你把__init__、create_table、实际处理数据的process_item方法全部写在了第一层process_item的return语句之后,这些方法根本没有被注册为Pipeline的类方法,代码逻辑完全无法正常执行。
  • SQL语法错误:单元素的SQL参数需要显式加逗号声明为元组,你写的(item['project_title'])会被识别为普通字符串,后续执行时会报参数数量不匹配错误。
  • 方法重复定义:每个Pipeline内出现了两次process_item方法定义,逻辑完全冲突。

修复方案

直接替换你的pipelines.py为以下代码即可:

import sqlite3
from tutorial.items import ProjectItem
from tutorial.items import ProjectDetails

class ProjectlistPipeline:
    def __init__(self):
        self.con = sqlite3.connect('freelancer.db')
        self.cur = self.con.cursor()
        self.create_table()

    def create_table(self):
        self.cur.execute("""CREATE TABLE IF NOT EXISTS projects(
        project_title TEXT PRIMARY KEY)""")

    def process_item(self, item, spider):
        if not isinstance(item, ProjectItem):
            return item
        self.cur.execute("""INSERT OR IGNORE INTO projects VALUES(?)""",
                         (item['project_title'],))
        self.con.commit()
        return item

class ProjectPipeline:
    def __init__(self):
        self.con = sqlite3.connect('freelancer.db')
        self.cur = self.con.cursor()
        self.create_table()

    def create_table(self):
        self.cur.execute("""CREATE TABLE IF NOT EXISTS project_site(
        project_budget TEXT)""")

    def process_item(self, item, spider):
        if not isinstance(item, ProjectDetails):
            return item
        self.cur.execute("""INSERT OR IGNORE INTO project_site VALUES(?)""",
                         (item['project_budget'],))
        self.con.commit()
        return item

验证说明

修复后重新启动爬虫即可正常区分两类Item,分别写入对应的SQLite表中,原NameError问题会直接解决。

内容的提问来源于stack exchange,提问作者CodeCoder20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:09:03