用正则表达式提取51job网页中的信息
import requests
import re
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"
# 职位名
# 将要提取的用(.*)表示,每条数据不同的地方用.*表示
position_pat = '<a target="_blank" title="(.*)" href=".*" onmousedown=".*">'
position = re.findall(position_pat, res.text)
# 公司名
company_pat = '<span class="t2"><a target="_blank" title="(.*)" href=".*">.*</a></span>'
company = re.findall(company_pat, res.text)
# 工作地点
place_pat = '<div class="el">.*?<span class="t3">(.*?)</span>' # 非贪婪模式
place = re.findall(place_pat, res.text, re.S)
# 薪资
salary_pat = '<div class="el">.*?<span class="t4">(.*?)</span>' # 非贪婪模式
salary = re.findall(salary_pat, res.text, re.S)
# 将取出的信息放到数据框
jobInfo = DataFrame([position, company, place, salary]).T
# 设置列名
jobInfo.columns = ['职位名', '公司名', '工作地点', '薪资']
print(jobInfo.head())
# 将数据保存到本地
jobInfo.to_csv('51job2.csv')
输出结果:
职位名 公司名 工作地点 薪资
0 java开发工程师 新疆古漠网络技术有限公司 异地招聘 6-8千/月
1 Java开发工程师 数安时代科技股份有限公司 佛山-南海区 6-8.5千/月
2 Java开发工程师 广东安训信息科技有限公司 东莞-莞城区 0.8-1.2万/月
3 资深Java开发工程师 上海创蓝文化传播有限公司 上海 2.5-3万/月
4 Java开发工程师 天闻数媒科技有限公司 长沙 0.9-1.4万/月