系列文章目录
第一章:scrapy爬取起点中文网24小时热销榜单
第二章:scrapy爬取苏州二手房交易信息
第三章:scrapy爬取QQ音乐榜单歌曲及豆瓣电影信息
第四章:scrapy爬取起点中文网24小时热销榜单(将数据存到数据库中)
文章目录
前言
之前每次将爬虫得到的信息都存到了csv文件中,虽然可以用wps打开并进行修改,但是还有有一些不方便,这次就直接在程序中,将所的信息直接插到数据库中进行保存,对于日后的数据再次调用也方便了许多。
一、安装需要的库
1.安装数据库(博主选择的是mysql)
不是本次内容不说了,如果你的电脑是ubuntu可以看我另一篇博客
ubuntu20.04安装mysql5.7及Navicat
2.安装mysqlclient或者pymysql
这里简单说一下两者的区别
前者是由python和mysql共同开发的,是一个C的扩展模块,效率更快一些,但是安装编译较麻烦。
后者是一个纯python的驱动,可以直接用pip安装,但是效率略低一些。
博主前期用的是pymysql但现在已经换成mysqlclient,建议新手用pymysql如果是打算长期使用爬虫的还是用mysqlclient。根据自身需求决定吧。
安装pymysql直接 pip install pymysql
安装mysqlclient,也可以直接pip,但一般都会有编译错误,自己根据错误信息解决。
二、项目分析
1.数据抓取
本次项目是在第一章的项目上对数据进行了新的处理,对于数据的抓取并没有什么新的内容,略过。
2.创建数据表
如图创建五个数据字段,数据库操作不是本次内容,略过。
三、代码编写
因此代码实在第一章的项目上进行改进,所以只说下需要修改的部分。
1.编写piplines(将数据插入数据库)
import MySQLdb
class MySQLPipeline(object):
def open_spider(self,spider):#再spider开始之前,调用一次
#这里的表名,用户名,密码都存储在settings中,下面每个get()中有两个参数
#第一个就是从settings中获取配置信息,第二个当获取失败时采用的信息。
db_name=spider.settings.get("MYSQL_DB_NAME","qidian")
host = spider.settings.get("MYSQL_HOST", "localhost")
user = spider.settings.get("MYSQL_USER", "root")
password = spider.settings.get("MYSQL_PASSWORD", "123456")
#连接mysql数据库
self.db_conn=MySQLdb.connect(db=db_name,
host=host,
user=user,
password=password,
charset="utf8")
self.db_cursor=self.db_conn.cursor() #建立游标尺
def process_item(self,item,spider):#处理每一个item
valuse=(item["name"],item["author"],item["type"],item["form"])
#确定sql
sql="insert into hot(name,author,type,form) value(%s,%s,%s,%s)"
self.db_cursor.execute(sql,valuse)
return item
def close_spider(self,spider):#再spider结束时,调用一次
self.db_conn.commit()#提交数据
self.db_cursor.close() #删除游标尺
self.db_conn.close() #断开链接
2.编写settings(编写配置信息)
在最下方加入数据库的配置信息
MYSQL_DB_DNNAME="qidian"
MYSQL_HOST="localhost"
MYSQL_user="root"
MYSQL_PASSWORD="123456"
开启piplines管道文件。
ITEM_PIPELINES = {
'qidian_hot.pipelines.MySQLPipeline': 400,
}
3.修改start
from scrapy import cmdline
cmdline.execute("scrapy crawl hot" .split())
4.效果图
总结
此次文章在内容抓取上没有什么新的内容,只是增加了将数据插入数据库,主要是为日后的代码复用提供便利。