51job爬虫-正则表达式

#51job爬虫,利用正则表达式提取网页信息
import requests
import re
url='https://search.51job.com/list/180200,000000,0000,32,9,99,%25E5%2589%258D%25E7%25AB%25AF%25E5%25BC%2580%25E5%258F%2591,2,1.html'
res=requests.get(url)
print(res)
res.encoding='gbk'
<Response [200]>
#职位名
pat='<a target="_blank" title="(.*)" href=".*" onmousedown="">'
position=re.findall(pat,res.text)
print(position)
#定位信息,复制网页源代码
['前端开发工程师(中高级)', 'WEB前端开发工程师', 'Web前端开发工程师', '前端开发工程师', 'web前端开发工程师(偏react方向)', 'Web前端开发工程师(急聘+周末双休)', 'Web前端开发工程师', '前端开发(精通javaScript)', 'Web前端开发工程师', '前端开发工程师', 'Web前端开发工程师', 'java/web前端开发(应届生)', 'Web前端开发工程师', '前端开发工程师', 'Web前端开发工程师', '前端开发工程师', 'python前端开发', '前端开发负责人—武汉', '中级前端开发工程师', '前端开发工程师', '前端开发主管', 'python前端开发', '带薪年假+web前端开发', '前端开发工程师', '前端开发工程师', 'Web前端开发工程师', 'Web前端开发工程师', 'Web前端开发工程师', '前端开发工程师', 'web前端开发/实习生', 'Web前端开发工程师(可实习)', '资深前端开发工程师 - 效率工程', 'Web前端开发工程师(中级)', '前端开发工程师', '前端开发工程师', '前端开发工程师', '前端开发工程师', 'web前端开发实习生+双休+五险一金', 'Web前端开发工程师', '前端开发工程师', 'Web前端开发工程师', 'Web前端开发工程师', 'web前端开发', '前端开发工程师', '小程序前端开发工程师', '高级前端开发工程师', '前端开发工程师', '前端开发(工作地点:宜昌)', 'WEB前端开发/中级开发', 'Web前端开发工程师']
len(position)
50
#公司名
company_pat='<span class="t2"><a target="_blank" title="(.*)" href=".*">.*</a></span>'
company=re.findall(company_pat,res.text)
print(company)
len(company)
['“前程无忧”51job.com(光谷)', '北京美百极致科技有限公司', '武汉芝士科技有限公司', '武汉上九利合科技有限公司', '武汉万般上品信息技术有限公司', '武汉无线飞翔科技有限公司', '武汉捷讯信息技术有限公司', '武汉东天红数字科技有限公司', '武汉掌中宝网络科技有限公司', '武汉麦诺软创网络科技有限公司', '武汉昊天驰科技有限公司', '武汉诚者网络科技有限公司', '湖北华体康健康科技有限公司', '武汉商川资讯科技有限公司', '武汉云辅材科技有限公司', '乐跑体育互联网(武汉)有限公司', '去哪儿网机票事业部', '莆田市维诺尔贸易有限公司', '中设数字技术股份有限公司', '武汉大方汽车租赁有限公司', '光谷金信(武汉)科技有限公司', '武汉市星商电子商务有限公司', '福州踏趣百妙商贸有限公司', '湖北华奥星空体育产业联盟发展有限公司', '中普睿云信息科技(武汉)有限公司', '武汉璇瑞智佳装饰装修设计工程有限公司', '武汉壹点壹滴科技有限公司', '武汉公选王教育科技有限公司', '博看网', '深圳市第一企业管理咨询有限公司', '武汉智博华鑫网络科技有限公司', '湖北省零度银色冰雪实业有限公司', '字节跳动', '深圳市宇轩网络技术有限公司武汉分公司', '星云海数字科技股份有限公司', '湖北长佰网络科技有限公司', '上海南棠实业有限公司', '湖北长江云新媒体集团有限公司', '武汉华工科固建筑技术工程有限公司', '武汉市软酷网络科技有限公司', '武汉云外恒信息技术有限公司', '武汉北科天翼信息科技股份有限公司', '武汉美美咖科技有限公司', '武汉科思沃斯教育科技有限公司', '熊猫智慧水务有限公司', '武汉文一科技有限公司', '武汉悦然心动网络科技有限公司', '武汉共成联创信息技术有限公司', '宜昌快马仕网络科技有限公司', '前海金信(深圳)科技有限责任公司', '掌淘网络科技(上海)有限公司武汉分公司']
51
#地点
place_pat='<span class="t3">(.*)</span>'
place=re.findall(place_pat,res.text)
print(place)
['工作地点', '武汉-洪山区', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-武昌区', '武汉-江夏区', '武汉-洪山区', '武汉-江岸区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-江汉区', '武汉-东湖新技...', '武汉-东西湖区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-武汉经济...', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-武昌区', '武汉-江汉区', '武汉-洪山区', '武汉-武昌区', '武汉-江汉区', '异地招聘', '武汉-江夏区', '武汉-汉阳区', '武汉', '武汉-洪山区', '武汉', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉', '武汉', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-汉阳区', '异地招聘', '武汉-洪山区', '武汉-洪山区']
#薪资
salary_pat='<span class="t4">(.*)</span>'
salary=re.findall(salary_pat,res.text)
print(salary)
['薪资', '12-18万/年', '1-1.5万/月', '8-10万/年', '0.8-1.2万/月', '0.6-1.5万/月', '0.6-1.2万/月', '0.7-1.4万/月', '6-8千/月', '0.9-1.3万/月', '3-7千/月', '6-8千/月', '6-8千/月', '4.5-7.5千/月', '3.5-5千/月', '0.8-1万/月', '0.7-1万/月', '1-1.5万/月', '0.6-1.2万/月', '1.5-2.5万/月', '0.7-1万/月', '0.9-1.4万/月', '1-2万/月', '0.6-1.2万/月', '4.5-7.5千/月', '0.6-1.2万/月', '0.8-1万/月', '0.8-1万/月', '0.8-1万/月', '1-1.5万/月', '2.5-3万/月', '4.5-7.5千/月', '4.5-7千/月', '4-8万/月', '0.8-1.2万/月', '0.5-1万/月', '0.5-1万/月', '5-9千/月', '5-18万/年', '3.5-6千/月', '0.6-1万/月', '0.5-1万/月', '3-5千/月', '1-1.5万/月', '0.6-1.1万/月', '0.6-1.5万/月', '6-9千/月', '1.2-2.4万/月', '6.5-8千/月', '4-6千/月', '1.2-2万/月', '1-1.5万/月']
模式修正符
'''
I 匹配时忽略大小写
S 让.匹配换行符
M 多行匹配
'''
import re 
string ='Python'
pat='pyt'
r=re.findall(pat,string)
print(r)
[]
import re 
string ='Python'
pat='pyt'
r=re.findall(pat,string,re.I)
print(r)
['Pyt']
string ='''Python
baidu
'''
pat='t.*d'
r=re.findall(pat,string)
print(r)
[]
string ='''Python
baidu
'''
pat='t.*d'
r=re.findall(pat,string,re.S)
print(r)
['thon\nbaid']
#51JOB爬虫
#地点
place_pat='<div class="el">.*?<span class="t3">(.*?)</span>'#非贪婪模式
place=re.findall(place_pat,res.text,re.S)
print(place)
['武汉-洪山区', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-武昌区', '武汉-江夏区', '武汉-洪山区', '武汉-江岸区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-江汉区', '武汉-东湖新技...', '武汉-东西湖区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-武汉经济...', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-武昌区', '武汉-江汉区', '武汉-洪山区', '武汉-武昌区', '武汉-江汉区', '异地招聘', '武汉-江夏区', '武汉-汉阳区', '武汉', '武汉-洪山区', '武汉', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉', '武汉', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-汉阳区', '异地招聘', '武汉-洪山区', '武汉-洪山区']
#薪资
salary_pat='<div class="el">.*?<span class="t4">(.*?)</span>'
salary=re.findall(salary_pat,res.text,re.S)
print(salary)
len(salary)
['12-18万/年', '1-1.5万/月', '8-10万/年', '0.8-1.2万/月', '0.6-1.5万/月', '0.6-1.2万/月', '0.7-1.4万/月', '6-8千/月', '0.9-1.3万/月', '3-7千/月', '6-8千/月', '6-8千/月', '4.5-7.5千/月', '3.5-5千/月', '0.8-1万/月', '0.7-1万/月', '1-1.5万/月', '0.6-1.2万/月', '1.5-2.5万/月', '0.7-1万/月', '0.9-1.4万/月', '1-2万/月', '0.6-1.2万/月', '4.5-7.5千/月', '0.6-1.2万/月', '0.8-1万/月', '0.8-1万/月', '0.8-1万/月', '1-1.5万/月', '2.5-3万/月', '4.5-7.5千/月', '4.5-7千/月', '4-8万/月', '0.8-1.2万/月', '0.5-1万/月', '0.5-1万/月', '5-9千/月', '5-18万/年', '3.5-6千/月', '0.6-1万/月', '0.5-1万/月', '3-5千/月', '1-1.5万/月', '0.6-1.1万/月', '0.6-1.5万/月', '6-9千/月', '1.2-2.4万/月', '6.5-8千/月', '4-6千/月', '1.2-2万/月', '1-1.5万/月']
#51job爬虫梳理
import requests
import re
from pandas import DataFrame
url='https://search.51job.com/list/180200,000000,0000,32,9,99,%25E5%2589%258D%25E7%25AB%25AF%25E5%25BC%2580%25E5%258F%2591,2,1.html'
res=requests.get(url)
res.encoding='gbk'
#利用正则表达式提取网页信息
pat='<a target="_blank" title="(.*)" href=".*" onmousedown="">'
position=re.findall(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=['职位名','公司名','地点','薪资']
jobInfo.head()
<Response [200]>
职位名	公司名	地点	薪资
0	Web前端开发工程师	“前程无忧”51job.com(光谷)	武汉-洪山区	12-18万/年
1	前端开发工程师(中高级)	武汉上九利合科技有限公司	武汉-武昌区	0.8-1.2万/月
2	WEB前端开发工程师	北京美百极致科技有限公司	武汉-洪山区	1-1.5万/月
3	前端开发工程师	武汉芝士科技有限公司	武汉-武昌区	8-10万/年
4	web前端开发工程师(偏react方向)	武汉万般上品信息技术有限公司	武汉-武昌区	0.6-1.5万/月
''' 爬去多页信息 1.找翻页规律,构造网址 2.通过循环爬取多页信息 '''

https://search.51job.com/list/180200,000000,0000,32,9,99,%25E5%2589%258D%25E7%25AB%25AF%25E5%25BC%2580%25E5%258F%2591,2,1.html https://search.51job.com/list/180200,000000,0000,32,9,99,%25E5%2589%258D%25E7%25AB%25AF%25E5%25BC%2580%25E5%258F%2591,2,2.html

import requests
import re
from pandas import DataFrame
import pandas as pd
jobInfoALL=DataFrame()#存放总的信息

for i in range(1,4):
    url='https://search.51job.com/list/180200,000000,0000,32,9,99,%25E5%2589%258D%25E7%25AB%25AF%25E5%25BC%2580%25E5%258F%2591,2,'+str(i)+'.html'
    res=requests.get(url)
    res.encoding='gbk'
    
#利用正则表达式提取网页信息
    pat='<a target="_blank" title="(.*)" href=".*" onmousedown="">'
    position=re.findall(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=['职位名','公司名','地点','薪资']
    jobInfoALL=pd.concat([jobInfoALL,jobInfo])
    
jobInfoALL.head()
职位名	公司名	地点	薪资
0	Web前端开发工程师	“前程无忧”51job.com(光谷)	武汉-洪山区	12-18万/年
1	前端开发工程师(中高级)	武汉上九利合科技有限公司	武汉-武昌区	0.8-1.2万/月
2	WEB前端开发工程师	北京美百极致科技有限公司	武汉-洪山区	1-1.5万/月
3	前端开发工程师	武汉芝士科技有限公司	武汉-武昌区	8-10万/年
4	web前端开发工程师(偏react方向)	武汉万般上品信息技术有限公司	武汉-武昌区	0.6-1.5万/月
len(jobInfoALL)
151

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值