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脚本使得web页面上的代码高亮显示
Apr 24 Python
python实现文件快照加密保护的方法
Jun 30 Python
在Django中进行用户注册和邮箱验证的方法
May 09 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
python实现机器学习之多元线性回归
Sep 06 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
Python实现小黑屋游戏的完整实例
Jan 06 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
Python中for后接else的语法使用
May 18 Python
python前后端自定义分页器
Apr 13 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
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
用js编写留言板
2020/03/17 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python中装饰器的一个妙用
2015/02/08 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
python图像常规操作
2017/11/11 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
纪检监察建议书
2014/05/19 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
红色影片观后感
2015/06/18 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS