利用python实现爬虫爬取某招聘网站,北京地区岗位名称包含某关键字的所有岗位平均月薪
#通过输入的关键字,爬取北京地区某岗位的平均月薪
# -*- 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实现爬虫爬取某招聘网站,北京地区岗位名称包含某关键字的所有岗位平均月薪的更多相关文章
- 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...
- 利用Python网络爬虫爬取学校官网十条标题
利用Python网络爬虫爬取学校官网十条标题 案例代码: # __author : "J" # date : 2018-03-06 # 导入需要用到的库文件 import urll ...
- 如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态——附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣 ...
- 如何利用Python网络爬虫抓取微信朋友圈的动态(上)
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...
- 利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化
前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将 ...
- 利用Python网络爬虫抓取微信好友的签名及其可视化展示
前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...
- python-scrapy爬取某招聘网站(二)
首先要准备python3+scrapy+pycharm 一.首先让我们了解一下网站 拉勾网https://www.lagou.com/ 和Boss直聘类似的网址设计方式,与智联招聘不同,它采用普通的页 ...
- python-scrapy爬取某招聘网站信息(一)
首先准备python3+scrapy+mysql+pycharm... 这次我们选择爬取智联招聘网站的企业招聘信息,首先我们有针对的查看网站的html源码,发现其使用的是js异步加载的方式,直接从服务 ...
- Python多线程爬虫爬取电影天堂资源
最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...
随机推荐
- Cordova+Ionic之坑
命令:ionic platform add android 报错:Unable to start the daemon process…… 解决: 1)添加环境变量[_JAVA_OPTIONS],值: ...
- SAP 设置屏幕字段的隐藏、显示、必填和可选,以设置物料组为例
1.事务码MM01,把物料组设为选填字段. 2.找到物料组的屏幕字段. 3.在后台根据屏幕字段找到对应字段组.后台路径:后勤-常规—物料主数据—字段选择—给字段组分配字段.点击后面的箭头进入下一屏幕. ...
- Gamemaker Studio运行时弹出打开窗口导致无法启动的错误
Desc 初次使用遇到一个问题,点击Run的时候并没有运行当前工程而是弹出一个打开窗体 Steam里面相同问题描述:Compile error 后续才得知是要选择data.win,但是这个文件根本就没 ...
- neo4j中文社区
关于Neo4j中文社区 官网:http://neo4j.com.cn/ Neo4j 社区为国内具影响力的 Neo4j技术社区,致力于 Neo4j 的技术研究. Neo4j 社区由一批热爱 Neo4j ...
- loadrunner将参数文件转换为UTF-8编码
在使用loadrunner进行参数化的时候,对于有些信息,比如地址.人名等,很多时候需要传入中文,但是有的时候会碰到字符编码不对导致脚本出错. 下面介绍两种loadrunner中可以使用的编码转化为U ...
- bean生命周期
一.Bean的定义Spring通常通过配置文件定义Bean.如:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:s ...
- volatile关键字及编译器指令乱序总结
本文简单介绍volatile关键字的使用,进而引出编译期间内存乱序的问题,并介绍了有效防止编译器内存乱序所带来的问题的解决方法,文中简单提了下CPU指令乱序的现象,但并没有深入讨论. 以下是我搭建的博 ...
- Oracle手工创建数据库
1,确定数据库全局变量名和实例名 DB_NAME = ORCL SID = ORCL 2,确定数据库管理员的认证方式: 管理员的认证方式包括操作系统认证和口令认证两种,本例采用操作系统认证 3,创建初 ...
- PLSQL大数据生成规则
数据定义 数据定义决定了被生成的数据.如果要创建简单的字符,可以在两个方括号之间输入字符定义:[数据] 数据可以是下列预先确定的集的混合体: • a: a..z (小写字符) ...
- java 事件处理机制:按下上下左右键控制小球的运动
/** * 加深对事件处理机制的理解 * 通过上下左右键来控制一个小球的位置 */package com.test3;import java.awt.*;import javax.swing.*;im ...