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中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
python基础教程项目三之万能的XML
Apr 02 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
opencv python 2D直方图的示例代码
Jul 20 Python
使用TensorFlow实现SVM
Sep 06 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python numpy线性代数用法实例解析
Nov 15 Python
wxPython色环电阻计算器
Nov 18 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
javascript中attribute和property的区别详解
2014/06/05 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python实现的数据结构与算法之队列详解
2015/04/22 Python
python开发之文件操作用法实例
2015/11/13 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
python爬虫增加访问量的方法
2019/08/22 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
员工团队活动方案
2014/08/28 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
三好学生个人总结
2015/02/15 职场文书
解除处分决定书
2015/06/25 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书