700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python爬虫获取拉钩网搜索招聘信息(超实用!)

python爬虫获取拉钩网搜索招聘信息(超实用!)

时间:2023-11-13 12:48:46

相关推荐

python爬虫获取拉钩网搜索招聘信息(超实用!)

在之前的博客《用python爬虫制作图片下载器(超有趣!)》中,小菌为大家分享了如何制作一个快捷便利的图片下载器。本次分享,小菌为大家带来的同样是关于爬虫程序方面的分享——获取拉勾网在线搜索消息。话不多说,直接上代码!

# -*- encoding: utf-8 -*-"""@File : 拉勾网在线搜索招聘信息(手动).py@Time : /10/27 14:27@Author : 封茗囧菌@Software: PyCharm转载请注明原作者创作不易,仅供分享"""# 导入相应的包import requestsimport timeimport jsonfrom urllib.parse import quotedef get_page(url_start,url_parse,params,job):# 创建一个session对象s = requests.Session()# 用session对象发出get请求,请求首页获取cookiess.get(url_start, headers=headers, timeout=3)# 获取此处的cookiecookie = s.cookies# 获取此次的文本response = s.post(url_parse, data=params, headers=headers, cookies=cookie, timeout=3)# 设置每次请求间隔5秒钟time.sleep(5)# 获取json格式的数据json_data = json.loads(response.text)# 从json数据中获取到数据的总数total_Count = json_data['content']['positionResult']['totalCount']print("搜索结果一共有:"+str(total_Count)+"条")'''拉勾网每页是15条数据,默认只有30页的信息,如果抓取信息的总数/15>30,就取30页'''if int(total_Count/15) < 30 :page_number = int(total_Count/15)else:page_number = 30# 根据页数决定方法调用的次数for pn in range(1, page_number + 1):get_info(url_start, url_parse, pn, job)print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")def get_info(url_start,url_parse,page_number,job):print("正在爬取第"+str(page_number)+"页数据")data = {'first': 'false','pn': page_number, # 页数'kd': job # 搜索的关键字}# 创建一个session对象s = requests.Session()# 用session对象发出get请求,请求首页获取cookiess.get(url_start, headers=headers, timeout=3)# 获取此处的cookiecookie = s.cookies# 获取此次的文本response = s.post(url_parse, data=data, headers=headers, cookies=cookie, timeout=3)# 设置爬虫休眠5秒time.sleep(5)# 整理json格式text = json.loads(response.text)# 获取信息列表info = text['content']['positionResult']['result']for i in info :# 获取公司idprint('公司id', i['companyId'])# 获取公司全名print('公司全名', i['companyFullName'])# 获取位置print('位置', i['city'])# 获取薪资print('薪资', i['salary'])# 获取公司规模print('公司所在人数', i['companySize'])# 获取要求技能print('所需技能', i['skillLables'])# 招聘信息发布时间print('信息发布时间', i['createTime'])# 区域print('所在区域', i['district'])# 要求学历print('要求学历', i['education'])# 车站名称print('车站名称', i['stationname'])print("===========================================================")if __name__ == '__main__':# 主程序入口job = input("欢迎来到拉勾网,请输入您想咨询的职位:")# 想要在URL中拼凑中文,需要将中文内容进行【转码】,用16进制表示job_transcode = quote(job)print("job", job_transcode)# 主url【要爬取数据页面首页】url_start = "/jobs/list_"+job_transcode+"/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput="# ajax请求url_parse = "/jobs/positionAjax.json?needAddtionalResult=false"print(url_start)params = {'first': 'true','pn': '1','kd': job}# 加入请求头,伪装成浏览器headers = {'Accept': 'application/json, text/javascript, */*; q=0.01','Referer': '/jobs/list_'+job_transcode+'/p-city_undefined?&cl=false&fromSearch=true&labelWords=&suginput=','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}get_page(url_start, url_parse, params, job)

效果图

细心的小伙伴可能发现了,这次的爬虫程序跟上次分享的图片下载器完全不是一个级别的,怎么那么多处代码看不懂 ̄へ ̄其实很正常啦,因为爬虫的下限很低,上限极高。(如果每个网站的数据都那么好获取,那让该网站背后的程序员情何以堪)可能对于初学爬虫不久的学者来说,理解该次爬虫的过程比较的困难。但莫言先生曾经说过:

当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练。

流年笑掷 未来可期!本次的分享就到这里,后续小菌还会推出更多有趣的爬虫,喜欢的小伙伴不要忘了点赞关注小菌~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。