python爬取拉勾网职位数据的方法


Posted in Python onJanuary 24, 2018

今天写的这篇文章是关于python爬虫简单的一个使用,选取的爬取对象是著名的招聘网站——拉钩网,由于和大家的职业息息相关,所以爬取拉钩的数据进行分析,对于职业规划和求职时的信息提供有很大的帮助。

完成的效果

  爬取数据只是第一步,怎样使用和分析数据也是一大重点,当然这不是本次博客的目的,由于本次只是一个上手的爬虫程序,所以我们的最终目的只是爬取到拉钩网的职位信息,然后保存到Mysql数据库中。最后中的效果示意图如下:

python爬取拉勾网职位数据的方法 

控制台输入

python爬取拉勾网职位数据的方法 

数据库显示

准备工作

  首先需要安装python,这个网上已经有很多的教程了,这里就默认已经安装python,博主使用的是python3.6,然后安装了requests、pymysql(连接数据库使用)和Mysql数据库。

分析拉勾网

  首先我们打开拉勾网,打开控制台,搜索java关键词搜索职位,选取北京地区,然后查看network一栏中的数据分析,查看第一个,是不是感觉它很像我们要拿到的请求地址,事实上不是的,这个打开之后是一个html,如果我们访问这个接口,拉钩会返回给我们一个结果,提示我们操作太频繁,也就是被拦截了。不过从这个页面可以看到,拉钩的网页用到了模板,这种加载数据的方式更加快速(大幅度提升),建议大家可以尝试使用一下(个人拙见)

python爬取拉勾网职位数据的方法 

不要气馁,我们接着往下找,可以看到一个“positionAjax”开头的请求,没错就它“ https://www.lagou.com/jobs/positionAjax.jsonpx=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0 ”,还是看图说话吧

python爬取拉勾网职位数据的方法 

找到请求地址之后,我们就开始写代码了。

先是导入requests和pymysql,然后requests的post方法访问上面找到的url,但是直接访问这个地址是会被拦截的,因为我们缺少所要传输的数据,和设置请求头,会被认为是非自然人请求的,加入请求头和数据,

headers = {'Referer':'https://www.lagou.com/jobs/list_'+position+'?city=%E5%8C%97%E4%BA%AC&cl=false&fromSearch=true&labelWords=&suginput=',    'Origin':'https://www.lagou.com',    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
    'Accept':'application/json, text/javascript, */*; q=0.01',
    'Cookie':'JSESSIONID=ABAAABAAAGFABEFE8A2337F3BAF09DBCC0A8594ED74C6C0; user_trace_token=20180122215242-849e2a04-ff7b-11e7-a5c6-5254005c3644; LGUID=20180122215242-849e3549-ff7b-11e7-a5c6-5254005c3644; index_location_city=%E5%8C%97%E4%BA%AC; _gat=1; TG-TRACK-CODE=index_navigation; _gid=GA1.2.1188502030.1516629163; _ga=GA1.2.667506246.1516629163; LGSID=20180122215242-849e3278-ff7b-11e7-a5c6-5254005c3644; LGRID=20180122230310-5c6292b3-ff85-11e7-a5d5-5254005c3644; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1516629163,1516629182; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1516633389; SEARCH_ID=8d3793ec834f4b0e8e680572b83eb968'
    }
 dates={'first':'true',
   'pn': page,#页数
   'kd': position#搜索的职位
 }

加入请求头之后就可以请求了,控制台输出数据,可以看出是一个json数据,使用json方法处理之后,一步步找到我们想要的数据,可以看出全在“result”里面,那么我们就只拿到他就行了,

result=resp.json()['content']['positionResult']['result']

这个时候可以看到数据非常多,有30个左右,不过不用担心,都是英文单词,基本上可以才出意思。接下来我们就要怕这些数据存储到数据库中,以备日后分析使用。

连接mysql我使用的是pymysql,先建好数据库和数据表,然后在代码中加入配置信息

config={
 "host":"127.0.0.1",
 "user":"root",
 "password":"",
 "database":databaseName,
 "charset":"utf8"#防止中文乱码
}

加载配置文件,连接数据库

db = pymysql.connect(**config)
cursor = db.cursor()
sql=""#insert语句
cursor.execute()
db.commit() #提交数据
cursor.close()
db.close()#用完记得关闭连接

大功告成,这个时候拉钩的职位信息已经静静地躺在了你的数据库中,静待你的宠幸,拿到这些数据,你就可以进行一些分析了,比如平均工资水平、职位技能要求等。

因为篇幅有限,有些代码并没有粘贴出来,比如sql语句(这个sql写的挺长的),但是别担心,楼主已经把这个程序放入到github上面了,大家可以自行下载,github地址:https://github.com/wudb1993/pythonDemo如果觉得不错的话请在github上面点一下star,手打不易谢谢啦,欢迎大神拍砖。

总结

以上所述是小编给大家介绍的python爬取拉勾网职位数据的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现得到一个给定类的虚函数
Sep 28 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
5种Python单例模式的实现方式
Jan 14 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
Python调用.NET库的方法步骤
Dec 27 Python
Python requests设置代理的方法步骤
Feb 23 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
python 连续不等式语法糖实例
Apr 15 Python
Python xlwt模块使用代码实例
Jun 10 Python
Python连接Mysql进行增删改查的示例代码
Aug 03 Python
总结Python连接CS2000的详细步骤
Jun 23 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 #Python
Python实现的生成格雷码功能示例
Jan 24 #Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 #Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 #Python
深入浅析Python中的yield关键字
Jan 24 #Python
Python3.6安装及引入Requests库的实现方法
Jan 24 #Python
pycharm+django创建一个搜索网页实例代码
Jan 24 #Python
You might like
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
js资料toString 方法
2007/03/13 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
pygame播放音乐的方法
2015/05/19 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
劲霸男装广告词
2014/03/21 职场文书
仓库规划计划书
2014/04/28 职场文书
体育课外活动总结
2014/07/08 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers