苏南大叔在本篇文章中,继续讲述scrapy如何处理item数据,如何把抓取到的item数据,持久化到mysql数据库之中。

本文的主要战场是:piplines.py这个文件。在python中,配合mysql的库文件也有好多个。本文中涉及的,也是个非常基础的python库,名字叫做:pymysql

本文的测试环境是:python3.7scrapy1.5.1pymysql0.9.2。本文中涉及的item,都是指:爬虫yield item返回来的item

安装pymysql

要使用pymysql,就需要先通过pip安装pymysql,安装pymysql的方法如下:

pip install pymysql

苏南大叔:scrapy爬虫系列:利用pymysql操作mysql数据库 - pip_install_pymysql
scrapy爬虫系列:利用pymysql操作mysql数据库(图3-1)

可以查看到安装好的pymsql版本号是0.9.2

pip show pymysql

苏南大叔:scrapy爬虫系列:利用pymysql操作mysql数据库 - pip_show_pymysql
scrapy爬虫系列:利用pymysql操作mysql数据库(图3-2)

查询数据

查询数据的时候,可能出问题的概率比较大。那么需要注意的是,如何拿到数据。

  • fetchone()/fetchall()/fetchmany(),其中fetchone()fetchall()比较常用。
  • 那么请注意在初始化阶段的参数cursorclass=pymysql.cursors.DictCursor。否则返回值不是字典类型,而是元组类型。没有key,可能导致你无所适从。
self.connect = pymysql.connect(
    # ...
    cursorclass=pymysql.cursors.DictCursor
    # ...
)
self.cursor.execute("""SELECT * from wp_posts where id = %s""", (5))
result = self.cursor.fetchone()
if result:
    title = result["title"]

这里先做简要说明,后续再展开文章讨论fetchone()/fetchall()/fetchmany()的具体区别及用法。

结论

scrapy通过pymysqlitem数据,持久化成了mysql里面的一条条记录。当然pymysql并不是这期间最好最优的选择。在python的世界里面,用于操作mysql数据库的库非常多。这里,就仅仅做个抛砖引玉了。

到本教程为止,应该可以使用scrapy应对一般的数据抓取任务了。当然,更多更详细的scrapy的经验文章,苏南大叔正在不断准备中,敬请期待。

那么想知道,其它的python操作数据库的其它方式么?那么,请关注苏南大叔的后续python系列文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   mysql    python

本站的忠实读者小伙伴,正在阅读下面这些文章: