【Python经典实战爬虫技术】:爬取拉勾网职位并分析

0. 前言

本文从拉勾网爬取深圳市数据分析的职位信息,并以CSV格式保存至电脑,之后进行数据清洗,生成词云,进行描述统计和回归分析,最终得出结论。

1. 用到的软件包

Python版本: Python3.6 

requests:下载网页

math:向上取整

time:暂停进程

pandas:数据分析并保存为csv文件

matplotlib:画图

statsmodels:统计建模

wordcloud、scipy、jieba:生成中文词云

pylab:设置画图能显示中文

2. 解析网页

打开Chrome,在拉勾网搜索深圳市的“数据分析”职位,使用检查功能查看网页源代码,发现拉勾网有反爬虫机制,职位信息并不在源代码里,而是保存在JSON的文件里,因此我们直接下载JSON,并使用字典方法直接读取数据。

抓取网页时,需要加上头部信息,才能获取所需的数据。

defget_json(url,num):

'''''从网页获取JSON,使用POST请求,加上头部信息'''

my_headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',

'Host':'www.lagou.com',

'Referer':'https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput=',

'X-Anit-Forge-Code':'0',

'X-Anit-Forge-Token':'None',

'X-Requested-With':'XMLHttpRequest'

}

my_data = {

'first':'true',

'pn':num,

'kd':'数据分析'}

res = requests.post(url, headers = my_headers, data = my_data)

res.raise_for_status()

res.encoding ='utf-8'

# 得到包含职位信息的字典  

page = res.json()

returnpage

在搜索结果的第一页,我们可以从JSON里读取总职位数,按照每页15个职位,获得要爬取的页数。再使用循环按页爬取,将职位信息汇总,输出为CSV格式。

程序运行如图:

 

抓取结果如图:

 

3. 数据清洗

数据清洗占数据分析工作量的大头。在拉勾网搜索深圳市的“数据分析”职位,结果得到369个职位。查看职位名称时,发现有4个实习岗位。由于我们研究的是全职岗位,所以先将实习岗位剔除。由于工作经验和工资都是字符串形式的区间,我们先用正则表达式提取数值,输出列表形式。工作经验取均值,工资取区间的四分位数值,比较接近现实。

# 数据清洗,剔除实习岗位  

df.drop(df[df['职位名称'].str.contains('实习')].index, inplace=True)

# print(df.descr

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值