#通过输入的关键字,爬取北京地区某岗位的平均月薪
# -*- 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. [原创] Win7全自动精简批处理_绝对原创,绝对给力_感谢无忧给了我一年的潜水

    2011htpcfans发表于 2012-5-5 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210043 @echo 全自动/手动精简 ...

  2. Opentaps安装小记

    这周了解了个MES项目需求,于是乎找了些开源项目了解下,有php+mysql写的weberp,配置起来相当方便,下一版webERP_v4.13,往F:\Apache\htdocs\一放,启动F:\Ap ...

  3. Android 自定义View

    Android 自定义View流程中的几个方法解析: onFinishInflate():从布局文件.xml加载完组件后回调 onMeasure() :调用该方法负责测量组件大小 onSizeChan ...

  4. 《高级Web应用程序设计》课程

    一.课堂课件 全部授课内容 二.作业 访问ftp://192.168.42.254:22,登录后找到自己的姓名文件夹,放入作业即可.登录账号为stu1,密码为空. 已布置练习 练习1(截止日期10月1 ...

  5. Laravel RuntimeException inEncrypter.php line 43: The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths

    php artisan key:generate 运行上面代码即可解决

  6. mysql 5.7 忘记root密码解决方法

    1.修改配置文件 vim /etc/my.cnf 在[mysqld]节点添加 skip-grant-tables 2.重启mysql 3.用空密码进入 mysql -uroot 执行 update m ...

  7. pip常见操作收录

    由于这些东西比较容易忘掉,在这里几下吧 1. pip 对应用进行安装: sudo pip install  your_app 2. pip 对应用进行update sudo pip install   ...

  8. IIS部署WCF网站服务步骤

    一开始在“管理工具”下找不到IIS的快捷方式,是因为系统默认未打开IIS功能,所以首先打开IIS功能: 为避免出现未知的麻烦,建议将IIS下的所有项都勾上: 创建IIS桌面快捷方式: 添加网站托管: ...

  9. JavaScript的面向对象编程(OOP)(三)——聚合

    之前写过了类和原型,这里再说聚合,在写关于聚合之前,对与继承我再总结一下.JavaScript中关于继承的方式一共有三种,之前写了两种,但是没有说明,这里补充说明一下. 1.类式继承:通过在函数对象内 ...

  10. Android开发--Android Studio配置

    1.常见问题 emulator: You might want to adjust your AVD RAM size and/or HAXM configuration to run in fast ...