利用Beautiful Soup爬取51job招聘网站数据
import requests
from bs4 import BeautifulSoup
from pandas import DataFrame
url = 'https://search.51job.com/list/000000,000000,0000,32,9,99,Java%25E5%25BC%2580%25E5%258F%2591,2,1.html'
res = requests.get(url)
res.encoding = 'gbk'
# 创建一个BeautifulSoup对象
soup = BeautifulSoup(res.text, 'lxml')
# ----获取职位名----
position_tag = soup.find_all('p', class_='t1') # 或者写成('span',{'class':'t1'}) # ----找到所有属性为t1的p标签
position = []
for i in range(len(position_tag)):
position.append(position_tag[i].a['title']) # 或position_tag[i].a.get_text()
# ----获取公司名----
company_tag = soup.find_all('span', class_='t2') # 或者写成('span',{'class':'t2'}) # ----找到所有属性为t2的span标签
company = []
for i in range(len(company_tag) - 1):
company.append(company_tag[1:][i].a['title']) # company_tag[1:][i] 从第2个数据开始,第一个数据是'公司名'
# ----获取工作地点----
place_tag = soup.find_all('span', class_='t3') # 或者写成('span',{'class':'t3'}) # ----找到所有属性为t3的span标签
place = []
for i in range(len(place_tag) - 1):
place.append(place_tag[1:][i].get_text()) # place_tag[1:][i] 从第2个数据开始,第一个数据是'工作地点'
# ----薪资----
salary_tag = soup.find_all('span', class_='t4') # 或者写成('span',{'class':'t4'}) # ----找到所有属性为t4的span标签
salary = []
for i in range(len(salary_tag) - 1):
salary.append(salary_tag[1:][i].get_text()) # salary_tag[1:][i] 从第2个数据开始,第一个数据是'薪资'
# 将数据放在一个数据框中
jobInfo = DataFrame([position, company, place, salary]).T
jobInfo.columns = ['职位名', '公司名', '工作地点', '薪资']
print(jobInfo.head())
print(len(jobInfo))
# 利用describe进行统计分析
print(jobInfo.describe())
# 将数据保存到本地
jobInfo.to_csv('../data/51job5.csv')