今天写的这篇文章是关于 python 爬虫简单的一个使用,选取的爬取对象是著名的招聘网站--拉钩网,由于和大家的职业息息相关,所以爬取拉钩的数据进行分析,对于职业规划和求职时的信息提供有很大的帮助.
完成的效果
爬取数据只是第一步,怎样使用和分析数据也是一大重点,当然这不是本次博客的目的,由于本次只是一个上手的爬虫程序,所以我们的最终目的只是爬取到拉钩网的职位信息,然后保存到 Mysql 数据库中.最后中的效果示意图如下:
控制台输入
数据库显示
准备工作
首先需要安装 python,这个网上已经有很多的教程了,这里就默认已经安装 python,博主使用的是 python3.6, 然后安装了 requests,pymysql(连接数据库使用)和 Mysql 数据库.
分析拉勾网 首先我们打开拉勾网,打开控制台,搜索 java 关键词搜索职位,选取北京地区,然后查看 network 一栏中的数据分析,查看第一个,是不是感觉它很像我们要拿到的请求地址,事实上不是的,这个打开之后是一个 html,如果我们访问这个接口,拉钩会返回给我们一个结果,提示我们操作太频繁,也就是被拦截了.不过从这个页面可以看到,拉钩的网页用到了模板,这种加载数据的方式更加快速(大幅度提升),建议大家可以尝试使用一下(个人拙见)
不要气馁,我们接着往下找,可以看到一个 "positionAjax" 开头的请求,没错就它 "https://www.lagou.com/jobs/positionAjax.jsonpx=default&city=北京&needAddtionalResult=false&isSchoolJob=0",还是看图说话吧
找到请求地址之后,我们就开始写代码了.
先是导入 requests 和 pymysql,然后 requests 的 post 方法访问上面找到的 url,但是直接访问这个地址是会被拦截的,因为我们缺少所要传输的数据,和设置请求头,会被认为是非自然人请求的,加入请求头和数据,
headers = {'Referer':'https://www.lagou.com/jobs/list_'+position+'?city=北京&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=北京; _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,手打不易谢谢啦,欢迎大神拍砖.
来源: https://www.cnblogs.com/wudb/p/8341036.html