python 爬取应届生求职网中的求职信息并存入MySQL数据库中!
目录
简介1,python连接数据库创建表2,获取网站的数据3,插入数据到MySQL中4,main函数5,插入数据成功展示6,数据词云图简介
看到了应届生求职网站里面发布了众多的全国各省各市的求职信息,可以看到各个公司的岗位需求,以及招聘时间,地区等等,感觉挺丰富的,然后顺便练一下爬虫,来获取哈信息的,不是去来求职的哈哈,当然里面的求职信息也是值得我们关注的。
此次爬取的信息
1,python连接数据库创建表
将数据存储到MySQL里面,当然要首先要在数据库创建一张表的,然后表的结构根据自己的数据创建。
# -*- coding: utf-8 -*-#@Project filename:PythonDemo SpiderJob.py#@IDE :IntelliJ IDEA#@Author :ganxiang#@Date :/05/07 0007 10:18#所需要的库import requestsimport parselimport timeimport pymysqlconnection =pymysql.connect(host='127.0.0.1',port=3306,user='root',password='1234567',database='spider',charset='utf8')def create_table():mycursor =connection.cursor()#1,表存在则删除mycursor.execute("DROP TABLE IF EXISTS job")# 2,创建表sql = """create table job(num int(11) NOT NULL AUTO_INCREMENT primary key,company varchar(255) DEFAULT NULL,positions varchar(255) DEFAULT NULL,region varchar(255) DEFAULT NULL,data_source varchar(255) DEFAULT NULL,dates varchar(255) DEFAULT NULL)"""try:mycursor.execute(sql)mit()print("创建表成功~")except Exception as e:print("创建失败~:{}".format(e))finally:mycursor.close()# connection.close() #创建表完成关闭连接,这里后面还用到就将其注释掉,如果只用来创建表创建完成可以开启关闭连接
2,获取网站的数据
这里数据直接在HTML中的静态的(这里的静态只针对某一时刻静态,网站是隔一段时间将自己求职信息更新),我们直接提取就行,我用的parsel库的css选择器的方法,当然可以选择适合自己的提取网页元素方法。
def parse():headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/0101 Firefox/38.0" }url ="/guizhoujob/index.html"# session =requests.session()res =requests.get(url,headers=headers)# print(res.content.decode(encoding="gbk"))context =res.content.decode(encoding="gbk")sel =parsel.Selector(context)company=sel.css('tr.jobli td:nth-child(1) a::text').getall()# print(company)position=sel.css('tr.jobli td:nth-child(2) a::text').getall()# print(position)region=sel.css('tr.jobli td:nth-child(3) span::text').getall()source=sel.css('tr.jobli td:nth-child(4) span::text').getall()date=sel.css('tr.jobli td:nth-child(5) span::text').getall()#将数据以字段形式返回data ={'company':company,'position':position,'region':region,'source':source,'date':date}return data
3,插入数据到MySQL中
这里我用一个循环将数据一条一条的插入到我们的数据库中
def run_insert_data():t1=time.time()text =parse()mycursor =connection.cursor()for i in range(0,73):sql = 'INSERT INTO job(company,positions,region,data_source,dates)VALUES ("%s","%s","%s","%s","%s")'%\(str(text['company'][i]),str(text['position'][i]),str(text['region'][i]),str(text['source'][i]),str(text['date'][i]))mycursor.execute(sql)mit()mycursor.close()connection.close()t2=time.time()print("插入数据完成,用时:",t2-t1)
4,main函数
if __name__ =='__main__':create_table()time.sleep(3)#等待3秒后进行数据的插入run_insert_data()
5,插入数据成功展示
数据库展示
6,数据词云图
画词云图这里展示图片就行了,之前有一片博客有讲解看这里详解词云图
6.1 招聘公司词云图->将招聘公司词云图,可以了解到那些公司需要的招聘人员较多
6.2 招聘岗位词云图
6.3 网站的数据来源
看到这儿了,点赞再走呗~