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编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
Jun 20 Python
深入理解Django中内置的用户认证
Oct 06 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
pandas Dataframe行列读取的实例
Jun 08 Python
python散点图实例之随机漫步
Aug 27 Python
Python装饰器简单用法实例小结
Dec 03 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
python 实现多线程下载视频的代码
Nov 15 Python
Python实现密码薄文件读写操作
Dec 16 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
python剪切视频与合并视频的实现
Mar 03 Python
Python sorted对list和dict排序
Jun 09 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
python读取Android permission文件
2013/11/01 Python
python比较两个列表大小的方法
2015/07/11 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
python创建学生成绩管理系统
2019/11/22 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
internal修饰符起什么作用
2013/12/16 面试题
大学生创业感言
2014/01/25 职场文书
评职称个人总结
2015/03/05 职场文书