爬取前程无忧招聘网站计算机类岗位信息写入表格并做简单分析
时间: 2023-12-15 19:05:33 浏览: 147
招聘信息爬取与分析
好的,这个任务需要使用 Python 编程语言进行爬虫开发和数据处理。以下是实现思路:
1. 使用 requests 库请求前程无忧招聘网站的页面,获取页面源码。
2. 使用 BeautifulSoup 库解析页面源码,获取页面中的招聘信息。
3. 使用 pandas 库创建一个数据表格,将招聘信息写入表格中。
4. 对表格中的数据进行简单的统计和分析,例如计算平均薪资、岗位数量等。
以下是具体实现步骤和代码:
1. 导入所需的库
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
```
2. 请求页面并解析页面源码
```python
# 请求页面
url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,计算机,2,1.html'
r = requests.get(url)
r.encoding = 'gbk'
# 解析页面源码
soup = BeautifulSoup(r.text, 'html.parser')
job_list = soup.find_all('div', class_='el')
```
3. 创建数据表格并将招聘信息写入表格中
```python
# 创建数据表格
df = pd.DataFrame(columns=['职位名称', '公司名称', '工作地点', '薪资', '发布日期'])
# 将招聘信息写入表格中
for job in job_list:
job_name = job.find('a', class_='jobname').text.strip()
company_name = job.find('a', class_='comname').text.strip()
job_location = job.find('span', class_='t3').text.strip()
job_salary = job.find('span', class_='t4').text.strip()
job_date = job.find('span', class_='t5').text.strip()
df = df.append({'职位名称': job_name,
'公司名称': company_name,
'工作地点': job_location,
'薪资': job_salary,
'发布日期': job_date}, ignore_index=True)
```
4. 对数据进行简单的统计和分析
```python
# 计算平均薪资
salary_list = [int(salary.replace('千/月', '').replace('-', '0')) for salary in df['薪资']]
average_salary = sum(salary_list) / len(salary_list)
# 计算岗位数量
job_count = len(df)
print('平均薪资:%.2f 千/月' % average_salary)
print('岗位数量:%d' % job_count)
```
完整代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 请求页面
url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,计算机,2,1.html'
r = requests.get(url)
r.encoding = 'gbk'
# 解析页面源码
soup = BeautifulSoup(r.text, 'html.parser')
job_list = soup.find_all('div', class_='el')
# 创建数据表格
df = pd.DataFrame(columns=['职位名称', '公司名称', '工作地点', '薪资', '发布日期'])
# 将招聘信息写入表格中
for job in job_list:
job_name = job.find('a', class_='jobname').text.strip()
company_name = job.find('a', class_='comname').text.strip()
job_location = job.find('span', class_='t3').text.strip()
job_salary = job.find('span', class_='t4').text.strip()
job_date = job.find('span', class_='t5').text.strip()
df = df.append({'职位名称': job_name,
'公司名称': company_name,
'工作地点': job_location,
'薪资': job_salary,
'发布日期': job_date}, ignore_index=True)
# 计算平均薪资
salary_list = [int(salary.replace('千/月', '').replace('-', '0')) for salary in df['薪资']]
average_salary = sum(salary_list) / len(salary_list)
# 计算岗位数量
job_count = len(df)
print('平均薪资:%.2f 千/月' % average_salary)
print('岗位数量:%d' % job_count)
```
注意,这个爬虫程序可能会因为反爬机制而失败,需要根据需求进行反爬策略的制定和调整。
阅读全文