#通过输入的关键字,爬取北京地区某岗位的平均月薪
# -*- coding: utf-8 -*-
import re
import requests
import time
import lxml.html
from bs4 import BeautifulSoup
#------------------------------------------------定义函数:获取指定网页北京地区所有相关职位的月薪---------------------
def getSalary(url):
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
resp=requests.get(url,headers=headers)
time.sleep(5)
web_data = BeautifulSoup(resp.content, "lxml")
firstlist=web_data.find_all('td')
salarylist1=[]
salarylist2=[]
for i in firstlist:
if 'zwyx' in str(i) and '面议' not in str(i): #提取职位月薪,并存入salarylist1列表,月薪为面议时不统计
salarylist1.append(str(i)) #将列表转为字符串,并用正则表达式提取字符串里面的数字(即月薪),并存入salarylist2,此时列表中元素格式还是字符串
salaryliststr='+'.join(salarylist1)
reeq=re.compile(r'(\w[0-9]+)\w*')
salarylist2=re.findall(reeq,salaryliststr)
salarylist2=map(float,salarylist2) #将字符串格式的月薪转为float型
return salarylist2 #以数字列表形式返回指定网页所有统计到的月薪
#-------------------------定义函数:统计智联招聘网站北京地区,招聘岗位名称包含keyword关键字所有岗位的平均月薪-------------
def getAverageSalary(keyword):
url=r'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC&kw='+keyword+'&sm=0&p=1&kt=3' #包含关键字的网站名
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}
pagelist=[]
salarylist=getSalary(url) #提取第一页的招聘岗位月薪信息,并存入salarylist列表
print salarylist
while True:
resp=requests.get(url,headers=headers)
time.sleep(5)
if resp.status_code!=200:
break
resp=resp.content
reg=r'a href="(.*?)" class="next-page">下一页</a>' #用于获取下一页地址的正则表达式
reg=re.compile(reg)
page=re.findall(reg,resp)
if page!=[]: #如果未到检索的最后一页
page1=re.split(r'href="',page[0]) #提取当前页的下一页的网址,并赋给url
if re.search('http',page1[-1]):
pagelist.append(page1[-1])
url=page1[-1]
salarylist2=getSalary(url)
#print 'salarylist',salarylist
salarylist.extend(salarylist2) #将新提取的月薪信息存入salarylist列表
#print 'salarylist2',salarylist
else:
break
else: #已到检索到的最后一页,结束循环
break
salarylist=map(float,salarylist)
if len(salarylist)!=0:
averageSalary=sum(salarylist)/len(salarylist)
return averageSalary,pagelist
else:
print '统计到的月薪列表为0,请检查网页是否正确!'
return 0,[0,] averageSalary,pagelist=getAverageSalary('CAE') #爬取关键字为 CAE 的岗位平均月薪
print 'AverageSalary:',averageSalary

  

利用python实现爬虫爬取某招聘网站,北京地区岗位名称包含某关键字的所有岗位平均月薪的更多相关文章

  1. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  2. 利用Python网络爬虫爬取学校官网十条标题

    利用Python网络爬虫爬取学校官网十条标题 案例代码: # __author : "J" # date : 2018-03-06 # 导入需要用到的库文件 import urll ...

  3. 如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

    前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态——附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣 ...

  4. 如何利用Python网络爬虫抓取微信朋友圈的动态(上)

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  5. 利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

    前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将 ...

  6. 利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  7. python-scrapy爬取某招聘网站(二)

    首先要准备python3+scrapy+pycharm 一.首先让我们了解一下网站 拉勾网https://www.lagou.com/ 和Boss直聘类似的网址设计方式,与智联招聘不同,它采用普通的页 ...

  8. python-scrapy爬取某招聘网站信息(一)

    首先准备python3+scrapy+mysql+pycharm... 这次我们选择爬取智联招聘网站的企业招聘信息,首先我们有针对的查看网站的html源码,发现其使用的是js异步加载的方式,直接从服务 ...

  9. Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

随机推荐

  1. spring定时器,当遇见半小时的情况时

    spring定时器遇见半小时的解决方法(这里只提供注解方式) @Scheduled(fixedRate=6000000)//每隔100分钟执行方法 fixedRate的值是毫秒

  2. oracle 隐藏过长字段

    case                    when length(m.topic)>20 then substr(m.topic,0,20)||'...'                  ...

  3. mysql授权

    grant all privileges on testdb to userA@'%' 然而通过userA登录查看存储过程时仍然无权限查看,通过jdbc连接程序也报错, 之前mysql在windows ...

  4. react+redux完整项目

    地址:https://segmentfault.com/a/1190000007642740?utm_source=tuicool&utm_medium=referral

  5. 关于如何使用Identity的文献

    有几篇文件,深入浅出地讲解了如何一步一步的使用Identity,感觉十分有用,留下链接,备查. 1. Configuring Db Connection and Code-First Migratio ...

  6. centos7查看端口命令

    查看Centos端口命令: # netstat -lntp #查看监听(Listen)的端口# netstat -antp #查看所有建立的TCP连接其他关于查看服务器网络信息命令:1.查看Linux ...

  7. Win10重复按键盘经常按不出?Win10关闭筛选键步骤

    在Win10系统中,有用户发现,有时重复按一个键位,经常会出现打不出字符的情况,导致输入效率降低,其实这很有可能是你开启了筛选键导致,筛选键帮助用户忽略那些短时间的按键动作,下面我们就来看看win10 ...

  8. cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)

    题目: Description standard input/output As most of you know, the Arab Academy for Science and Technolo ...

  9. 版本控制简介,git使用----使用GitHub托管代码

    关于版本控制: 很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大 ...

  10. CSS实现背景图尺寸不随浏览器缩放而变化

    方法一. 把图片作为background,方法二使用img标签.同时要有一张足够大尺寸的图片. 方法一. 把图片作为background 有几个CSS的属性要提一下:background-size:c ...