爬取51job并生成薪资的柱状图
时间: 2023-10-18 21:37:12 浏览: 120
好的,以下是实现的大致步骤:
1. 确定需要爬取的信息,例如:职位名称、薪资、城市等。
2. 使用 Python 的 requests 和 BeautifulSoup 库进行网页爬取和数据提取。
3. 对提取的数据进行清洗和去重。
4. 使用 Python 的 pandas 库进行数据处理,将薪资数据转换成数值型数据。
5. 使用 Python 的 matplotlib 库或其他可视化工具生成柱状图。
具体实现时,可以参考以下代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 爬取信息
url = 'https://search.51job.com/list/020000,000000,0000,00,9,99,Python,2,1.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
job_list = soup.select('.dw_table .el')
# 提取数据
data_list = []
for job in job_list:
job_name = job.select('.t1')[0].text.strip()
job_salary = job.select('.t4')[0].text.strip()
job_location = job.select('.t3')[0].text.strip()
data_list.append({
'job_name': job_name,
'job_salary': job_salary,
'job_location': job_location
})
# 数据清洗和去重
df = pd.DataFrame(data_list)
df = df.drop_duplicates()
# 薪资数据处理
df['salary_min'] = df['job_salary'].apply(lambda x: int(x.split('-')[0]))
df['salary_max'] = df['job_salary'].apply(lambda x: int(x.split('-')[1].split('万')[0]))
df['salary_avg'] = (df['salary_min'] + df['salary_max']) / 2
# 柱状图生成
plt.figure(figsize=(8, 6))
plt.bar(df['job_name'], df['salary_avg'])
plt.xticks(rotation=45)
plt.xlabel('职位名称')
plt.ylabel('薪资(万元/年)')
plt.title('Python岗位薪资')
plt.show()
```
需要注意的是,该代码仅供参考,具体实现时需要根据实际情况进行调整。另外,爬取网站信息涉及到一些法律和道德问题,请确保自己的行为合法合规。
阅读全文
相关推荐















