python爬取51job网站职位信息并绘图
时间: 2023-07-13 17:32:31 浏览: 152
基于Python的51job数分岗位招聘信息爬取分析设计源码
5星 · 资源好评率100%
好的,以下是爬取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职位信息,并将职位名称、公司名称和薪资存储到本地文件中。然后,对薪资进行分段处理,统计每个薪资段的职位数量,并绘制饼图展示。
阅读全文