当前位置: 首页 > 后端技术 > Python

Python分析BOSS直接录用的职位数据

时间:2023-03-25 22:51:29 Python

前言毕业找工作,在职人员跳槽,离职人员找工作...不管什么样的人,求职都需要分析先看对应职位,职位要求是否符合自己,常见的求职平台有:BOSS直聘、拉勾、智联等。我们通常的做法是打开招聘网站,搜索职位关键词,然后逐个查看一页一页。如果觉得这份工作还不错,投个Resume,或者和负责人聊聊,那有没有什么办法一次性列出相关的招聘职位,分析起来方便快捷,当然有答案...我想做什么?最近,我也在考虑新的工作机会。所以,我这样做是为了方便;给大家看一下,打开下面的链接可以看到BOSS直接录用的100个PHP招聘职位,这是一张表格展示了100个PHP招聘职位,没错,这就是我从BOSS直聘网抓取的PHP招聘职位。为什么有100个?我不敢问。毕竟BOSS直聘的官网限制在10页。通过爬取数据,然后生成markdown表单文件,最后展示在有道分享中,也就是上面看到的那个,话不多说,开始吧。运行环境Python运行环境:Windows+python3.6使用的模块:requests、bs4如果没有安装该模块,请使用pipinstatllxxxxxx安装,例如:pipinstallrequests爬取老板直接就业数据这里是不行的推荐大家使用自己的IP去爬BOSS直接雇佣的数据,因为分分钟就会进入小黑屋,所以这里,我们使用代理IP。关于代理IP,我在上一篇文章中已经提到了,不过不明白的可以回头看看;而且header中的cookie值是必填的,可以在浏览器中刷新BOSS直聘网站,然后打开F12在Network中找到,复制使用,需要更换的,不要一直用同一个cookie爬取所有的数据,多试几次你就明白了...proxies_port)proxies={'http':'http://'+ip_url,'https':'https://'+ip_url}header={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/70.0.3538.77Safari/537.36','cookie':cookie}request=requests.get(url=url,headers=header,proxies=proxies,timeout=3)html=Falseifrequest.status_code==200:html=request.contentreturnhtml完整源码老规矩,我已经把代码上传到了GitHub(GitHub源码地址),但是,作为一个热心搬运工搬砖,为了方便一些想成为我的人azy不要直接去交友网站查,我这里也把源码贴出来,有什么问题最好交友网站找我比较好,请接受code...#!/usr/bin/envpython#-*-coding:utf-8-*-"""使用requests+bs4爬取老板直接就业数据作者:gxcuizydate:2020-06-18"""importrequestsfrombs4importBeautifulSoupclassGetBossData(object):"""抓取10页Boss直聘数据"""domain='https://www.zhipin.com'base_url='https://www.zhipin.com/c101280600/?query='position=''#代理IP地址proxies_ip='58.220.95.30'proxies_port='10174'def__init__(self,position):self.position=positiondefget_url_html(self,url,cookie):"""请求页面html"""ip_url=self.proxies_ip+':'+str(self.proxies_port)proxies={'http':'http://'+ip_url,'https':'https://'+ip_url}header={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/70.0.3538.77Safari/537.36','cookie':cookie}request=requests.get(url=url,headers=header,proxies=proxies,timeout=3)html=Falseifrequest.status_code==200:html=request.contentreturnhtmldefrun(self):"""执行入口"""page_list=range(1,11)#打开文件,准备写入dict_file=open('job.md','a',encoding='UTF-8')#清空文件内容dict_file.seek(0)dict_file.truncate()dict_file.write('|Position|Region|Salary|Yearinformation|公司名称|公司信息|链接|')dict_file.write('\n|---|---|---|---|---|---|---|')#page_list中page的page爬取数据:print('开始爬取'+str(page)+'pagedata')boss_url=self.base_url+str(self.position)+'&page='+str(page)+'&ka=page-'+str(page)#F12开启调试模式,手动刷新页面获取cookie,然后替换ifpage<4:cookie_val='lastCity=101280600;__zp_seo_uuid__=d59649f5-bc8a-4263-b4e1-d5fb1526ebbe;__c=1592469667;__g=-;hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1592469673;__l=l=%2Fwww.zhipin.com%2Fshenzhen%2F&r=https%3A%2F%2Fwww.google.com%2F&friend_source=0&friend_source=0;toUrl=https%3A%2F%2Fwww.zhipin.com%2F%2Fjob_detail%2F3f35305467e161991nJ429i4GA%7E%7E.html;__a=43955211.1592469667..1592469667.39.1.39.39;hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1592530438;__zp_stoken__=7f3aaPCVBFktLe0xkP21%2BJSFCLWILSwx7NEw4bVJkRx8pdBE3JGNmWjVwdx5PXC8rHmN%2BJB0hX1UvTz5VPyMmOhIVHBglVzoxJQIdLQtKR3ZFBFIeazwOByVndFndFXBFXBAN%;__zp_sseed__=Ykg0aQ3ow1dZqyi9KmeVnWrqZXcZ32a4psiagwqme3M=;__zp_sname__=93bf4835;__zp_sts__=1592530479301'elif页面<7:cookie_val='lastCity=101280600;__zp_seo_uuid__=d59649f5-bc8a-4263-b4e1-d5fb1526ebbe;__c=1592469667;__g=-;hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1592469673;__l=l=%2Fwww.zhipin.com%2Fshenzhen%2F&r=https%3A%2F%2Fwww.google.com%2F&friend_source=0&friend_source=0;toUrl=https%3A%2F%2Fwww.zhipin.com%2F%2Fjob_detail%2F3f35305467e161991nJ429i4GA%7E%7E.html;__a=43955211.1592469667..1592469667.39.1.39.39;hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1592530438;__zp_stoken__=7f3aaPCVBFktLe0xkP21%2BJSFCLWILSwx7NEw4bVJkRx8pdBE3JGNmWjVwdx5PXC8rHmN%2BJB0hX1UvTz5VPyMmOhIVHBglVzoxJQIdLQtKR3ZFBFIeazwOByVndFndFXBFXBAN%;__zp_sseed__=Ykg0aQ3ow1dZqyi9KmeVnWrqZXcZ32a4psiagwqme3M=;__zp_sname__=93bf4835;__zp_sts__=1592530514188'elif页面<10:cookie_val='lastCity=101280600;__zp_seo_uuid__=d59649f5-bc8a-4263-b4e1-d5fb1526ebbe;__c=1592469667;__g=-;hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1592469673;__l=l=%2Fwww.zhipin.com%2Fshenzhen%2F&r=https%3A%2F%2Fwww.google.com%2F&friend_source=0&friend_source=0;toUrl=https%3A%2F%2Fwww.zhipin.com%2F%2Fjob_detail%2F3f35305467e161991nJ429i4GA%7E%7E.html;__a=43955211.1592469667..1592469667.40.1.40.40;hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1592530479;__zp_stoken__=7f3aaPCVBFktLCT4uVVV%2BJSFCLWIVPWZyNUk4bVJkR25XXHVeZWNmWjVwd286Sm83HmN%2BJB0hX1UvBiBVRyt9IWQOcRtWSk83fAsfJAtKR3ZFBE5efUl%2FByVndHwXRQN%2FXFo7W2BffFxtXSU%3D;__zp_sseed__=Ykg0aQ3ow1dZqyi9KmeVnd/9vyiSRHrJFoMai+azsb8=;__zp_sname__=93bf4835;__zp_sts__=1592530496863'否则:cookie_val='lastCity=101280600;__zp_seo_uuid__=d59649f5-bc8a-4263-b4e1-d5fb1526ebbe;__c=1592469667;__g=-;hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1592469673;__l=l=%2Fwww.zhipin.com%2Fshenzhen%2F&r=https%3A%2F%2Fwww.google.com%2F&friend_source=0&friend_source=0;toUrl=https%3A%2F%2Fwww.zhipin.com%2F%2Fjob_detail%2F3f35305467e161991nJ429i4GA%7E%7E.html;__a=43955211.1592469667..1592469667.41.1.41.41;__zp_stoken__=7f3aaPCVBFktLc1t4VTp%2BJSFCLWJscnlxSgw4bVJkRw9tLB4pb2NmWjVwdwwgc2l7HmN%2BJB0hX1UvGFZVTH0OdhQQfwxfOyoieW8cOgtKR3ZFBAJYRFMcByVndHwXTwN%2FXFo7W2BffFxtXSU%3D;hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1592530497;__zp_sseed__=Ykg0aQ3ow1dZqyi9KmeVnSZKsrhFUU/CYntJcRoFki4=;__zp_sname__=93bf4835;__zp_sts__=1592530514188'html=self.get_url_html(boss_url,cookie_val)soup=BeautifulSoup(html,'html.parser')#招聘职位列表job_list=soup.select('.job-listulli')forjob_liinjob_list:#单条职位信息url=self.domain+job_li.select('.job-titlea')[0].attrs['href']title=job_li.select('.job-titlea')[0].get_text()area=job_li.select('.job-title.job-area')[0].get_text()salary=job_li.select('.job-limit.red')[0].get_text()年份=job_li.select('.job-limitp')[0].get_text()company=job_li.select('.info-companyh3')[0].get_text()industry=job_li.select('.info-companyp')[0].get_text()info={'title':title,'area':area,'salary':salary,'year':year,'company':company,'industry':industry,'url':url}print(info)#写入工作信息info_demo='\n|%s|%s|%s|%s|%s|%s|%s|'dict_file.write(info_demo%(title,area,salary,year,company,industry,url))dict_file.close()#Programmainentryif__name__=='__main__':#Instantiatejob_name=input('请输入职位keyword:').strip()ifjob_name=='':print('关键字为空,请重试')exit(0)gl=GetBossData(job_name)#执行脚本gl.run()最后,if有什么问题可以给我留言,大家可以互相学习……希望所有正在找工作的朋友都能马上收到满意的offer,多薪少工的那种!哦,对了,网上求职,我在深圳拍(P)芦苇(H)片(P),如果你觉得有适合我的工作可以推荐给我,非常感谢