python爬取智联招聘存入mysql数据库以及csv文件显示(二)

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,我们需要将其转换成元组格式,插入到数据库中