首页 新闻 搜索 专区 学院

关于Scrapy 的管道的问题

0
[已解决问题] 解决于 2021-04-08 09:05

最近学Scrapy 在学习管道的时候,尝试使用数据库存储,但是报错了,不知道是什么原因,猜测是数据库连接出问题了,请各位大佬看看
先看代码
from itemadapter import ItemAdapter
import pymysql

class QiubaiproPipeline:
    fp = None

    # 只在刚开始爬的时候调用一次
    def open_spider(self, spider):
        print('开始爬虫...')
        self.fp = open('./qiubai.text', 'w', encoding='utf-8')

    # 专门用来处理item类型的对象
    # 接收提交过来的item对象
    # 每接收到一个item就调用一次方法
    def process_item(self, item, spider):
        author = item['author']
        content = item['content']
        self.fp.write(author + ':' + content + '\n')
        return item  # 将item传给下一管道

    def close_spider(self, spider):
        print('爬虫结束!!')
        self.fp.close()


class mysqlPipeline(object):
    conn = None
    cursor = None

    # 连接数据库
    def opens_spider(self, spider):
        self.conn = pymysql.Connect(host='127.0.0.1', port=3306, user='root', password='123456', db='test',charset='utf8')

    def process_item(self, item, spider):
        self.cursor = self.conn.cursor()
        try:
            self.cursor.execute('insert into qiubai values("%s","%s")' % (item["author"], item["content"]))
            self.conn.commit()
        except Exception as e:
            print(e)
            self.conn.rollback()  # 回滚
        return item

    def close_spider(self, spider):
        self.cursor.close()
        self.conn.close()

这是遇到的问题

木三136的主页 木三136 | 初学一级 | 园豆:173
提问于:2021-04-08 08:06
< >
分享
最佳答案
0

找到出问题的原因了

我把open_spider写成了opens_spider,没想到函数的名称竟然是固定的。

木三136 | 初学一级 |园豆:173 | 2021-04-08 09:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册