python爬取智联招聘存入mysql数据库以及csv文件显示(二)
(一)部分主要是理清思路,解析url,并获取数据
(二)部分主要是数据的存储部分,这里是csv和mysql存储的
这部分内容接着(一)的,为啥分两步,因为知乎的文本编辑器用的好累,继续进入正题。。。。
第一部分:存入csv
我主要参考的帖子:
python列表、字典与csv - moye - 博客园
里面对数据结构为list,为dict都有很详细的介绍。我的这部分代码是用嵌套在list里的dict存储的,存储格式为[{key:value},{key:values},{key:values}]
实现功能的代码如下:
def save_csv(self,detail_news):
with open ('myjobt.csv','wb') as f:
writer = csv.writer(f)
fieldnames =detail_news[0].keys() #将key作为表头标题填入
writer.writerow(fieldnames)
for row in detail_news:
writer.writerow(row.values()) #将value作为内容,依次进行填充
第二部分:存入mysql
首先得了解下部分的python连接mysql的小知识点: python使用mysql数据库 - 虫师 - 博客园
虫师的这部分基础写的很详细啦
连接数据库的代码如下:
def save_mysql(self,detail_news):
# 先连接数据库
conn =MySQLdb.connect(host = '127.0.0.1',user = 'root',passwd = '123456',charset = 'utf8',port = 3306)
cur = conn.cursor() # 数据库都是游标来操作的
sql = 'create database if not exists new_database default charset utf8'
cur.execute(sql) #创建数据库,注意编码格式为utf8
conn.select_db('new_database') #创建表 new_database
sql = 'create table if not exists myresult'+"(id int auto_increment, title varchar(255), company varchar(255), \
zwyx varchar(255),gzdd varchar(255), fbtime varchar(255), experence varchar(255), totalnum varchar(255), primary key(ID))"
cur.execute(sql) #创建表结构 这部分代码以后直接在mysql里创建就可以了
for elem in detail_news:
sql = 'insert into myresult(title,company,zwyx,gzdd,fbtime,experence,totalnum) values(\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\')'\
% tuple(elem) #detail_news是一个二重数组list,我们需要将其转换成元组格式,插入到数据库中