本文共 3184 字,大约阅读时间需要 10 分钟。
python 爬取应届生求职网中的求职信息并存入MySQL数据库中!
看到了里面发布了众多的全国各省各市的求职信息,可以看到各个公司的岗位需求,以及招聘时间,地区等等,感觉挺丰富的,然后顺便练一下爬虫,来获取哈信息的,不是去来求职的哈哈,当然里面的求职信息也是值得我们关注的。
此次爬取的信息将数据存储到MySQL里面,当然要首先要在数据库创建一张表的,然后表的结构根据自己的数据创建。
# -*- coding: utf-8 -*-#@Project filename:PythonDemo SpiderJob.py#@IDE :IntelliJ IDEA#@Author :ganxiang#@Date :2020/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) connection.commit() print("创建表成功~") except Exception as e: print("创建失败~:{}".format(e)) finally: mycursor.close() # connection.close() #创建表完成关闭连接,这里后面还用到就将其注释掉,如果只用来创建表创建完成可以开启关闭连接
这里数据直接在HTML中的静态的(这里的静态只针对某一时刻静态,网站是隔一段时间将自己求职信息更新),我们直接提取就行,我用的parsel库的css选择器的方法,当然可以选择适合自己的提取网页元素方法。
def parse(): headers = { 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" } url ="http://www.yingjiesheng.com/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
这里我用一个循环将数据一条一条的插入到我们的数据库中
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) connection.commit() mycursor.close() connection.close() t2=time.time() print("插入数据完成,用时:",t2-t1)
if __name__ =='__main__': create_table() time.sleep(3)#等待3秒后进行数据的插入 run_insert_data()
画词云图这里展示图片就行了,之前有一片博客有讲解
6.1 招聘公司词云图->将招聘公司词云图,可以了解到那些公司需要的招聘人员较多 6.2 招聘岗位词云图 6.3 网站的数据来源 看到这儿了,点赞再走呗~转载地址:http://xeqzi.baihongyu.com/