在上一篇当中呢,python3爬虫系列08之新版动态智联爬虫,我们已经把智联招聘的某地区,某岗位,某页数的所有数据爬下来了,然后保存为了一个text文件。
这一篇呢,我们说说把数据存入数据库的操作,毕竟真的项目爬虫出来,数据肯定是要入库的。
反正我以前搞java的,所以还是要学习一下的关于python怎么操作数据库的?
说到数据库呢。在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。
数据库现在分:
SQL关系型数据库:常见的MySQL和Oracle数据库、SQL Server
NoSQL非关系型数据库:
键值存储数据库:Redis、
列存储数据库:HBase、
面向文档数据库:MongoDB、
更多请参考百度百科:数据库。
这里以Mysql为例(主要是其他我也不会啊~):
为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库。是一个叫PyMySQL 的工具。
PyMySQL : 这是一个使Python连接到MySQL的库,它是一个纯Python库。
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
手动安装:
PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL
或
命令安装:
$ pip install PyMySQL
PyMySQL支持的python版本:
python2
python2.7
python3
python version >=3.4
查看PyMySQL版本信息,运行以下语句:
pip show PyMySQL
算了,我不就懒得科普了。
继续上一篇文章的爬取结果呢,我们是存入在txt中,现在要存到Mysql数据库中去。
所以,首先要打开你的mysql。
打开你自己的Mysql管理软件,我的是navicat ,然后新建一个数据库py_zljob,再新建一张表zljob,字段如下:
当然你可以运行如下SQL来自动建立:
CREATE TABLE `zljob` (
`id` int(10) NOT NULL auto_increment COMMENT 'id',
`jobName` varchar(30) default '' COMMENT '岗位',
`city` varchar(30) default NULL COMMENT '工作地点',
`workingExp` varchar(30) default NULL COMMENT '工作经验',
`salary` varchar(30) default NULL COMMENT '薪资',
`eduLevel` varchar(30) default NULL COMMENT '学历',
`company` varchar(30) default NULL COMMENT '公司名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=361 DEFAULT CHARSET=utf8;
这样建立好了我们用来存数据的数据表以后,就可以存数据了。
继续上一篇文章的代码。
连接数据库前,请先确认以下事项:
• 已经创建了数据库 py_zljob.
• 在py_zljob数据库中您已经创建了表 zljob
在上次的代码基础上呢,我们新建一个操作数据库的函数。
代码如下:
# 入库Mysql
def save_data_sql(content):
#print(type(content)) # 是生成器generator对象
try:
# 打开数据库连接-填入你Mysql的账号密码和端口
conn = pymysql.connect(host='localhost',user='root',password='root',db='py_zljob')
# 使用 cursor() 方法创建一个游标对象 cursor
mycursor = conn.cursor()
print('对应的是:',content['jobName'])
sql = "INSERT INTO zljob(jobName,city,workingExp,salary,eduLevel,company) \
VALUES (%s,%s,%s,%s,%s,%s)"
params = (content['jobName'],content['city'],content['workingExp'],content['salary'],content['eduLevel'],content['company'])
# 调用
mycursor.execute(sql,params)
#sql='select * from zljob'
# 执行sql语句
conn.commit()
# 获取所有记录列表
results = mycursor.fetchall()
for row in results:
print(row)
print('成功插入', mycursor.rowcount, '条数据')
except Exception:
# 发生错误时回滚
conn.rollback()
print('发生异常')
# 关闭数据库连接
mycursor.close()
conn.close()
然后在main函数中,调用写的这个函数。
运行一下:
打开数据库里面的表:
入库成功,好了,这就是我们的关于python3爬虫数据存入Mysql数据库的相关操作了。
更多关于python3使用PyMySQL对mysql增删查改工具类,请看:
python3使用PyMySQL对mysql增删查改工具类
下一篇是数据可视化了。源码在最后一篇哟,不要急,留下邮箱也可以发。
题外话:
注:如果你的MySQL的版本≥5.5.3,可以把编码设置为utf8mb4,utf8mb4和utf8完全兼容,但它支持最新的Unicode标准,可以显示emoji字符。
还不赶紧cmd打开,看看你的mysql?
mysql> show variables like ‘%char%’;
看到utf8字样就表示编码设置正确。