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

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

很多新手不太清楚杂乱的数据是如何存储在mysql数据库中的。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。

本文主要介绍了将零碎数据存储在mysql数据库中的两种方式(同步和异步)。通过本文的示例代码非常详细,对大家的学习或工作都有一定的参考和学习价值。有需要的朋友可以和边肖一起学习。

方法一:同步操作

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

导入pymysqlclass LvyouPipeline(对象):def __init__(self):#连接database self . connect=pymysql . connect(主机=’XXX ‘,用户=’root ‘,Passwd=’ XXX ‘,db=’ scrap _ test’) #接下来的三个是数据库连接名称,数据库密码和数据库名称# getcursorself . cursor=self . connect . cursor()print(‘成功连接到数据库’)def process_item(self,item,spider):# sql语句insert _ SQL 项目[‘地址’],项目[‘等级’],项目[‘分数’],项目[‘价格’])#提交,不能保存到数据库self.connect.com MIT()defclose _ spider(self,spider) 3360 #关闭光标并连接self . cursor . Close()self . connect . Close()

2.在配置文件中

方式二 异步储存

Pipelines.py文件:

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

1.导入adbapi。

2.生成数据库连接池。

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

4.并排打印错误信息。

import pymysql from twisted . enterprise import adbapi #异步更新操作classlvyou pipeline(对象):def _ _ init _ _ (self,Dbspool)3360 self . Dbspool=Dbspool @ class method def from _ settings(CLS,settings) 3360 #函数名是固定的,将由scrapy调用。可以使用直接设置: paramsettings 3360配置参数:return:实例化参数“”ADB params=dict(host=settings[‘ MySQL _ host ‘]),db=settings[‘MYSQL_DBNAME’],user=settings[‘MYSQL_USER’],PASSWORD=settings[‘ MYSQL _ PASSWORD ‘],Cursor类=pymysql.cursors.dictcursor #指定游标类型)的值“”与数据库建立连接#连接数据池connection通过连接池执行特定的sql操作,返回一个对象’ ‘ query=self . dbpool . run interaction(self . do _ Insert,Item) #指定操作方法和操作数据#添加异常处理query . addcallback(self . Handle _ error)#处理异常defdo _ insert (self,游标,item) : #插入数据库不提交。Twisted将自动提交insert _ SQL=“插入到吕游(名称1、地址、等级、分数、价格)值(%s、% s、% s、% s)”. cursor . execute(insert _ SQL,(项目[‘名称’]、项目[‘地址’]、项目[‘等级’]、项目[‘分数’]、项目[‘价格’])) defhandle _ error (self,failure) :如果失败3360 #打印错误消息打印(失败)

注意:

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

2.错误pymysql . err . programming error :(1064,

原因:当项目[‘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.当有中文时,需要在连接中添加字符集=’utf8 ‘,否则中文会显示乱码。

4.每次执行爬虫程序时,数据都会被追加到数据库中。如果多次测试爬虫,同样的数据会不断累积。如何实现增量爬行?

碎屑-增量提取

一次抓取(不同于存储数据库中的1)

scrapy-redis

Scrapy-redis-bloom过滤器(3的增强版本,可以更快地存储更多的网址和查询)

阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133897.html

(0)

相关推荐

  • 1公斤柴油等于多少升,二百公斤柴油等于多少升柴油

    技术1公斤柴油等于多少升,二百公斤柴油等于多少升柴油楼上的别瞎算害人,快回去进修完小学再来回复别人的问题1公斤柴油等于多少升。国标柴油的密度范围为0.810~0.855不同型号的密度不同常用如:0#柴油0.84密度公用/

    生活 2021年10月23日
  • Java的JCEKS有什么作用

    技术Java的JCEKS有什么作用这篇文章主要讲解了“Java的JCEKS有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的JCEKS有什么作用”吧!JC

    攻略 2021年11月30日
  • 怎么解决Java中Unexpected Exception报错问题

    技术怎么解决Java中Unexpected Exception报错问题这篇文章主要讲解了“怎么解决Java中Unexpected Exception报错问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的

    攻略 2021年11月16日
  • 20202303 实验八《数据结构与面向对象程序设计》实验报告

    技术20202303 实验八《数据结构与面向对象程序设计》实验报告 20202303 实验八《数据结构与面向对象程序设计》实验报告# 20202303 2021-2022-1 《数据结构与面向对象程序设

    礼包 2021年11月27日
  • 出租车起步价多少公里,出租车的起步价是什么意思

    技术出租车起步价多少公里,出租车的起步价是什么意思打底起步价出租车起步价多少公里:指的是打车的一个基础价格,意思是上车后不管你走多远,哪怕100米都要给的这个价钱。
    全国部分城市出租车起步价:
    北京
    起步价:白天10元/

    生活 2021年10月25日
  • js限制只能输入数字(input限制输入数字大小)

    技术html5如何限制输入数字的多少这篇文章主要介绍html5如何限制输入数字的多少,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! html中,可用输入标签的max和m

    攻略 2021年12月19日