接下来就是将他们存储到mysql数据库中,那就用到了pipeline项目管道了。
一、Mysql和Navicat是什么
Mysql是数据库
Navicat是管理数据库的工具。
(一)Mysql数据库
1、数据库的安装和调试
MySQL是一个关系型数据库管理系统,目前属于Oracle旗下产品。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
下载地址为:
https://dev.mysql.com/downloads/mysql/
MySQL Community Server 5.7.18
记住以下自己下载的版本以后用的着
Mac OS X 10.12 (x86, 64-bit), DMG Archive331.7M的hm/sQEkjO6wS
记得保存最后弹出框中的密码(它是你mysql root账号的密码)
此时只是安装成功,但还需要额外的配置:
开启mysql服务
进入mac命令模式
mysql -u root -p
登录成功后,你可以通过下面的命令修改密码
SETPASSWORDFOR'root'@'localhost'=PASSWORD('XXXXXX');
启动mysql
mysql -u root -p
XXXXXX
启动成功
show databases; 显示数据库
quit 退出
brew installmysql
重新执行一遍brew installmysql
命令行提示:Warning:mysql-5.7.10alreadyinstalled,it's just not linked
先停止所有mysql有关进程
下面这堆,一行一行慢慢的输入,别着急
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
vim /etc/hostconfig (and removed the line MYSQLCOM=-YES-)
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
2、安装连接数据库中间的东西pymysql
之前用pip install mysqlclient安装失败,后来知道只有python2才可以用。python3要用pymysql这个小坑埋了我一个星期。
安装pymysql来替代mysqldb
pip install pymysql
pipeline中的代码如下:
classMysqlPipeline(object):
# 采用同步的方式写入mysql
def__init__(self):
self.conn = pymysql.connect(host='192.168.1.102',port=3306,user='root',password='198813',db='article_spider',charset='utf8',use_unicode=True)
self.cursor =self.conn.cursor()
defprocess_item(self, item,spider):
insert_sql ="""
insert into jobbole_article(title, url, create_date, fav_nums, praise_nums, comment_nums, front_image_url, front_image_path, content ,tags) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
"""
self.cursor.execute(insert_sql,(item["title"], item["url"], item["create_date"], item["fav_nums"], item["praise_nums"], item["comment_nums"], item["front_image_url"], item["front_image_path"], item["content"], item["tags"]))
self.conn.commit()
(二)Navicat表格设计
python如何连接数据库呢?
对于一个外行的猿,折腾了不知道多少个日日夜夜才连接好。
setting中配置:
ITEM_PIPELINES= {
# 'mm.pipelines.MmPipeline': 300,
# 'scrapy.pipelines.images.ImagesPipeline': 1,
# 'mm.pipelines.ArticleImagePipeline': 1,
# 'mm.pipelines.JsonExporterPipleline': 2,
'ArticleSpider.pipelines.MysqlPipeline':1,
}
pipeline中配置,代码如下:
classMysqlPipeline(object):
def__init__(self):
self.conn = pymysql.connect(host='192.168.0.129',port=3306,user='root',password='198813',db='article_spider',charset='utf8',use_unicode=True)
self.cursor =self.conn.cursor ()
defprocess_item(self, item,spider):
insert_sql ="insert into jobbole_article(title, url, create_date, fav_nums) VALUES (%s, %s, %s, %s)"
self.cursor.execute ( insert_sql,(item["title"], item["url"], item["create_date"], item["fav_nums"]) )
self.conn.commit ()
纪念一下踩了无数坑的代码,以及慕课群里帮助过我的小伙伴们。
command+D可以循序进入“设计表”