python实现51JOB网站职位统计抓取并用matplotlib展示

python实现51JOB网站职位统计抓取并用matplotlib展示

2016年的时候,朋友正在运营自己公司,想为了公司更具备前瞻性,帮着弄了一个从招聘网站上获取数据的python脚本,将每天取一次并存在数据库中,主要抓取几个大城市计算机软件相关专业的招聘数量。 这两天没事试了试python图表库,用到了从16年开始到现在抓到的这些数据,现在一起发出来分享。 包中包括数据库表结构,python实现的数据抓取代码,以及python利用matplotlib生成线型分析图。

效果如图:
在这里插入图片描述
需要完整代码请前往下面链接:
https://download.csdn.net/download/b_xjie/10786386

数据库很简单,就一个表,如下:

/*
Navicat MySQL Data Transfer
Source Server Version : 50173
Source Database : db_zpstat
Target Server Type : MYSQL
Target Server Version : 50173
File Encoding : 65001
Date: 2018-11-14 17:13:05
*/


– Table structure for t_stat_51


DROP TABLE IF EXISTS t_stat_51;
CREATE TABLE t_stat_51 (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
keyword varchar(255) NOT NULL,
date timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00’ ON UPDATE CURRENT_TIMESTAMP,
city varchar(20) NOT NULL,
cnt int(11) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (id),
KEY fdate (date),
KEY key (keyword),
KEY count (cnt)
) ENGINE=MyISAM AUTO_INCREMENT=167984 DEFAULT CHARSET=utf8;

还有一个插入数据的存储过程:

数据库插入数据存储过程

下面的是从网站抓取数据的主程序,在服务器中是以服务自动运行的。代码如下:
//main.py 程序入口
程序入口

//source_51.py
在这里插入图片描述

//dbmgr.py 用于数据库操作
在这里插入图片描述

//helper.py

在这里插入图片描述

//下面代码从数据库取出数据并生成图形
在这里插入图片描述

结果展示

需要完整代码请前往下面链接:
https://download.csdn.net/download/b_xjie/10786386

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是爬取51job网站职位信息并绘图的步骤: 1. 确定要爬取的职位和地区,以及需要的数据字段。可以使用Python中的requests、beautifulsoup4等库进行网页解析和爬取。 2. 通过分析网页结构,确定要爬取的数据在哪个标签中,例如可以使用BeautifulSoup库中的find_all方法找到所有职位信息所在的标签。 3. 将爬取到的数据存储到本地文件或数据库中,可以使用Python中的csv、pandas等库进行数据处理和存储。 4. 对爬取到的数据进行分析和绘图,可以使用Python中的matplotlib、seaborn等库进行数据可视化。 以下是一个简单的示例代码,用于爬取51job网站上的Python职位信息并绘制饼图: ```python import requests from bs4 import BeautifulSoup import pandas as pd import matplotlib.pyplot as plt # 设置请求头,模拟浏览器访问 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 构造请求url url = 'https://search.51job.com/list/010000,000000,0000,00,9,99,Python,2,{}.html' # 循环爬取所有页面的职位信息 data = [] for i in range(1, 6): res = requests.get(url.format(i), headers=headers) soup = BeautifulSoup(res.text, 'html.parser') job_list = soup.find_all('div', class_='el') for job in job_list: job_name = job.find('a', target='_blank').text.strip() company_name = job.find('span', class_='t2').text.strip() salary = job.find('span', class_='t4').text.strip() if salary == '面议': continue data.append({'job_name': job_name, 'company_name': company_name, 'salary': salary}) # 将爬取到的数据存储到本地文件中 df = pd.DataFrame(data) df.to_csv('jobs.csv', index=False) # 对爬取到的数据进行分析和绘图 df = pd.read_csv('jobs.csv') df['salary'] = df['salary'].apply(lambda x: int(x.split('-')[0])) df['salary_range'] = pd.cut(df['salary'], [0, 5000, 10000, 15000, 20000, 30000, 50000, 100000]) salary_count = df['salary_range'].value_counts() plt.pie(salary_count, labels=salary_count.index, autopct='%1.1f%%') plt.title('Python职位薪资分布') plt.show() ``` 这段代码会爬取前5页的Python职位信息,并将职位名称、公司名称和薪资存储到本地文件中。然后,对薪资进行分段处理,统计每个薪资段的职位数量,并绘制饼图展示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白錵錵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值