用python动态获取boss招聘网上光通信招聘信息,并保存为csv文件以及进行可视化数据分析处理
时间: 2024-05-15 07:15:42 浏览: 98
由于boss直聘网站有反爬虫机制,我们需要模拟浏览器访问网站,并添加一些请求头信息。我们可以使用selenium和webdriver来实现。
首先,我们需要安装selenium和webdriver。可以在终端中使用以下命令:
```python
pip install selenium
```
然后,下载对应浏览器的webdriver。以Chrome浏览器为例,可以在以下链接下载对应的webdriver:https://sites.google.com/a/chromium.org/chromedriver/downloads
下载完成后,将webdriver.exe文件放在Python安装目录下的Scripts文件夹中。
接下来,我们可以编写代码来实现动态获取招聘信息的功能。
```python
import time
import csv
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 设置请求头信息
options = Options()
options.add_argument('--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')
# 设置webdriver路径
chrome_driver_path = r"C:\Python\Scripts\chromedriver.exe"
# 打开浏览器
driver = webdriver.Chrome(chrome_driver_path, chrome_options=options)
# 访问网站
driver.get("https://www.zhipin.com/job_detail/?query=%E5%85%89%E9%80%9A%E4%BF%A1&city=101010100&industry=&position=")
# 等待页面加载完成
time.sleep(5)
# 获取招聘信息
job_list = driver.find_elements_by_css_selector('.job-primary')
# 将招聘信息保存到csv文件中
with open('job_info.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['职位', '薪资', '公司', '地址'])
for job in job_list:
title = job.find_element_by_css_selector('.job-title').text
salary = job.find_element_by_css_selector('.red').text
company = job.find_element_by_css_selector('.company-text .name').text
location = job.find_element_by_css_selector('.job-text .location').text
writer.writerow([title, salary, company, location])
# 关闭浏览器
driver.quit()
```
运行完上述代码后,可以在当前文件夹中看到生成了一个job_info.csv文件,其中包含了招聘信息的职位、薪资、公司和地址。
接下来,我们可以使用pandas和matplotlib对数据进行可视化分析处理。首先,我们需要安装pandas和matplotlib。可以在终端中使用以下命令:
```python
pip install pandas matplotlib
```
然后,我们可以编写代码来实现数据可视化分析的功能。
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取csv文件
df = pd.read_csv('job_info.csv')
# 统计各薪资段的职位数量
bins = [0, 5, 10, 15, 20, 25, 30, 100]
labels = ['<5', '5-10', '10-15', '15-20', '20-25', '25-30', '>30']
df['salary_range'] = pd.cut(df['薪资'], bins=bins, labels=labels)
data = df['salary_range'].value_counts()
# 绘制柱状图
plt.bar(data.index, data.values)
# 添加图表标题和轴标签
plt.title('光通信招聘薪资分布')
plt.xlabel('薪资范围(千元/月)')
plt.ylabel('职位数量')
# 显示图表
plt.show()
```
运行完上述代码后,可以看到一个柱状图,表示光通信招聘的薪资分布情况。
通过以上代码,我们就可以实现动态获取boss招聘网上光通信招聘信息,并保存为csv文件以及进行可视化数据分析处理的功能。
阅读全文