大数据挖掘—(八):scrapy爬取数据保存到MySql数据库
(大数据挖掘—(七):读懂MySql数据库操作)(大数据挖掘神器——scrapy spider爬虫框架(五):解析多层网页)
通过往期的文章分享,我们了解了如何爬取想要的数据到Items中,也了解了如何操作MySQL数据库,那么我们继续完善我们的爬虫代码,把爬取的items,保存到MySQL数据库中。
scrapy构架
为了方便操作,我们自己新建一个mysqlpipelines文件夹,编写自己的pipelines.py文件,来运行保存items,在此文件夹下新建sql.py来编写我们保存数据库的sql语句。
编写sql语句
打开sql.py 编写代码,首先要连接数据库
import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host=MYSQL_HOSTS,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PASSWORD, db=MYSQL_DB,charset='utf8' ) cursor = connect.cursor()# 获取游标 print('连接数据库OK')
数据库连接ok后,我们打印一下,以便测试
新建一个类,编写sql语句
class my_sql: @classmethod #插入数据 def insert_data(cls,novelname,author,category,nameid,status,num,url): ................................................................................... @classmethod #判断数据是否存在 def select_name(cls,novelname): ................................................................................ @classmethod # 更新数据 def update_data(cls,author,category,nameid,status,num,url,novelname): ................................................................................ @classmethod # close sql def close_sql(cls): cursor.close() connect.close() print('数据库断开连接OK')
类中我们定义了插入,更新,查询的基本sql语句,最后定义一个关闭数据库的操作,中间操作数据库的详细代码请参考往期文件。
编写pipelines
from myproject.mysqlpipelines.sql import my_sql from myproject.items import PowersItem #插入新建的sql与item
定义pipelines
class Powerspipeline(object): def process_item(self,item,spider): if isinstance(item,PowersItem):#判断item是否存在 novelname=item['novelname'] author = item['author'] category = item['category'] nameid = item['nameid'] status = item['status'] num = item['num'] url = item['novelurl'] #以上获取爬取的数据 ret=my_sql.select_name(novelname)#判断数据是否存在在数据库中 if ret[0]==1:#已经存在 print('已经存在,等待更新') #若数据库中有以前的数据,更新数据库 my_sql.update_data(author,category,nameid,status,num,url,novelname) pass else: #若数据库中没有数据,保存item print('开始保存') my_sql.insert_data(novelname,author,category,nameid,status,num,url) else : print('no find items') return item
通过以上的操作我们爬虫的所有代码就完成了,运行代码就可以从数据库中,看到保存的数据
由于我调试过一次,已经有的数据,再次运行程序时,就会更新数据库。
保存的数据
下期预告:
关于爬虫的内容还有很多,下期我们分享一下爬虫解析网页的一个利器,正则表达式