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'

#职位名
pat=''
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='.*'
company=re.findall(company_pat,res.text)
print(company)
len(company)
['“前程无忧”51job.com(光谷)', '北京美百极致科技有限公司', '武汉芝士科技有限公司', '武汉上九利合科技有限公司', '武汉万般上品信息技术有限公司', '武汉无线飞翔科技有限公司', '武汉捷讯信息技术有限公司', '武汉东天红数字科技有限公司', '武汉掌中宝网络科技有限公司', '武汉麦诺软创网络科技有限公司', '武汉昊天驰科技有限公司', '武汉诚者网络科技有限公司', '湖北华体康健康科技有限公司', '武汉商川资讯科技有限公司', '武汉云辅材科技有限公司', '乐跑体育互联网(武汉)有限公司', '去哪儿网机票事业部', '莆田市维诺尔贸易有限公司', '中设数字技术股份有限公司', '武汉大方汽车租赁有限公司', '光谷金信(武汉)科技有限公司', '武汉市星商电子商务有限公司', '福州踏趣百妙商贸有限公司', '湖北华奥星空体育产业联盟发展有限公司', '中普睿云信息科技(武汉)有限公司', '武汉璇瑞智佳装饰装修设计工程有限公司', '武汉壹点壹滴科技有限公司', '武汉公选王教育科技有限公司', '博看网', '深圳市第一企业管理咨询有限公司', '武汉智博华鑫网络科技有限公司', '湖北省零度银色冰雪实业有限公司', '字节跳动', '深圳市宇轩网络技术有限公司武汉分公司', '星云海数字科技股份有限公司', '湖北长佰网络科技有限公司', '上海南棠实业有限公司', '湖北长江云新媒体集团有限公司', '武汉华工科固建筑技术工程有限公司', '武汉市软酷网络科技有限公司', '武汉云外恒信息技术有限公司', '武汉北科天翼信息科技股份有限公司', '武汉美美咖科技有限公司', '武汉科思沃斯教育科技有限公司', '熊猫智慧水务有限公司', '武汉文一科技有限公司', '武汉悦然心动网络科技有限公司', '武汉共成联创信息技术有限公司', '宜昌快马仕网络科技有限公司', '前海金信(深圳)科技有限责任公司', '掌淘网络科技(上海)有限公司武汉分公司']
51
#地点
place_pat='(.*)'
place=re.findall(place_pat,res.text)
print(place)
['工作地点', '武汉-洪山区', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-武昌区', '武汉-江夏区', '武汉-洪山区', '武汉-江岸区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-江汉区', '武汉-东湖新技...', '武汉-东西湖区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-武汉经济...', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-武昌区', '武汉-江汉区', '武汉-洪山区', '武汉-武昌区', '武汉-江汉区', '异地招聘', '武汉-江夏区', '武汉-汉阳区', '武汉', '武汉-洪山区', '武汉', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉', '武汉', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-汉阳区', '异地招聘', '武汉-洪山区', '武汉-洪山区']
#薪资
salary_pat='(.*)'
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='
.*?(.*?)'#非贪婪模式 place=re.findall(place_pat,res.text,re.S) print(place) ['武汉-洪山区', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-武昌区', '武汉-江夏区', '武汉-洪山区', '武汉-江岸区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-江汉区', '武汉-东湖新技...', '武汉-东西湖区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-武汉经济...', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-江夏区', '武汉-武昌区', '武汉-江汉区', '武汉-洪山区', '武汉-武昌区', '武汉-江汉区', '异地招聘', '武汉-江夏区', '武汉-汉阳区', '武汉', '武汉-洪山区', '武汉', '武汉-洪山区', '武汉-武昌区', '武汉-武昌区', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉', '武汉', '武汉', '武汉-洪山区', '武汉-洪山区', '武汉-洪山区', '武汉-汉阳区', '异地招聘', '武汉-洪山区', '武汉-洪山区'] #薪资 salary_pat='
.*?(.*?)' 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='' position=re.findall(pat,res.text) company_pat='.*' company=re.findall(company_pat,res.text) place_pat='
.*?(.*?)'#非贪婪模式 place=re.findall(place_pat,res.text,re.S) salary_pat='
.*?(.*?)' salary=re.findall(salary_pat,res.text,re.S) jobInfo=DataFrame([position,company,place,salary]).T jobInfo.columns=['职位名','公司名','地点','薪资'] jobInfo.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万/月 ''' 爬去多页信息 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='' position=re.findall(pat,res.text) company_pat='.*' company=re.findall(company_pat,res.text) place_pat='
.*?(.*?)'#非贪婪模式 place=re.findall(place_pat,res.text,re.S) salary_pat='
.*?(.*?)' 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

 

你可能感兴趣的:(python)