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 httplib,smtplib使用方法
Sep 06 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
详解python发送各类邮件的主要方法
Dec 22 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
深入浅出学习python装饰器
Sep 29 Python
Python中property属性实例解析
Feb 10 Python
python字典一键多值实例代码分享
Jun 14 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python爬虫入门有哪些基础知识点
Jun 02 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
python递归函数用法详解
Oct 26 Python
Python包管理工具pip的15 个使用小技巧
May 17 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作的文本留言本的例子(一)
2006/10/09 PHP
php动态函数调用方法
2015/05/21 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
详解Python中find()方法的使用
2015/05/18 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
python:动态路由的Flask程序代码
2019/11/22 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
python对XML文件的操作实现代码
2020/03/27 Python
详解python的super()的作用和原理
2020/10/29 Python
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
个人评价范文分享
2014/01/11 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
个人自查自纠材料
2014/10/14 职场文书
2015年推普周活动总结
2015/03/27 职场文书
矛盾论读书笔记
2015/06/29 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB