scrapy数据存储在mysql数据库的方式是什么

56次阅读
没有评论

共计 1857 个字符,预计需要花费 5 分钟才能阅读完成。

scrapy 数据存储在 mysql 数据库的方式是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

这篇文章主要介绍了 scrapy 数据存储在 mysql 数据库的两种方式 (同步和异步),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着丸趣 TV 小编来一起学习学习吧。

方法一:同步操作

1.pipelines.py 文件 (处理数据的 python 文件)

import pymysqlclass LvyouPipeline(object):def __init__(self):# connection databaseself.connect = pymysql.connect(host= XXX , user= root , passwd= XXX , db= scrapy_test) # 后面三个依次是数据库连接名、数据库密码、数据库名称# get cursorself.cursor = self.connect.cursor()print( 连接数据库成功)def process_item(self, item, spider):# sql 语句 insert_sql = insert into lvyou(name1, address, grade, score, price) VALUES (%s,%s,%s,%s,%s) # 执行插入数据到数据库操作 self.cursor.execute(insert_sql, (item[ Name], item[Address], item[Grade], item[Score],item[Price]))# 提交,不进行提交无法保存到数据库 self.connect.commit()def close_spider(self, spider):# 关闭游标和连接 self.cursor.close()self.connect.close()

2. 配置文件中

方式二 异步储存

pipelines.py 文件:

通过 twisted 实现数据库异步插入,twisted 模块提供了 twisted.enterprise.adbapi

1. 导入 adbapi。

2. 生成数据库连接池。

3. 执行数据数据库插入操作。

4. 打印错误信息,并排错。

import pymysqlfrom twisted.enterprise import adbapi# 异步更新操作 class LvyouPipeline(object):def __init__(self, dbpool):self.dbpool = dbpool@classmethoddef from_settings(cls, settings): # 函数名固定,会被 scrapy 调用,直接可用 settings 的值 数据库建立连接:param settings: 配置参数:return: 实例化参数 adbparams = dict(host=settings[ MYSQL_HOST],db=settings[MYSQL_DBNAME],user=settings[MYSQL_USER],password=settings[MYSQL_PASSWORD],cursor >

注意:

1、python 3.x 不再支持 MySQLdb,它在 py3 的替代品是:import pymysql。

2、报错 pymysql.err.ProgrammingError: (1064, ……

原因:当 item[quotes] 里面含有引号时,可能会报上述错误。

解决办法:使用 pymysql.escape_string() 方法。

例如:

sql = INSERT INTO video_info(video_id, title) VALUES(%s , %s) %(video_info[ id],pymysql.escape_string(video_info[ title]))

3、存在中文的时候,连接需要添加 charset= utf8,否则中文显示乱码。

4、每执行一次爬虫,就会将数据追加到数据库中,如果多次的测试爬虫,就会导致相同的数据不断累积,怎么实现增量爬取?

scrapy-deltafetch

scrapy-crawl-once(与 1 不同的是存储的数据库不同)

scrapy-redis

scrapy-redis-bloomfilter(3 的增强版,存储更多的 url, 查询更快)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计1857字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)