爬虫项目十七:用Python轻松爬下智联招聘七千条招聘信息 | 您所在的位置:网站首页 › 智联招聘怎样找工作的信息 › 爬虫项目十七:用Python轻松爬下智联招聘七千条招聘信息 |
文章目录
前言一、列表页URL获取二、详情页URL获取三、获取数据总结
前言
利用Python requets+selenium 爬取智联招聘中全国招聘数据。如果看过我之前的文章那应该知道我们之前写过一个纯用selenium来爬智联招聘的爬虫 提示:以下是本篇文章正文内容,下面案例可供参考 我的目的是需要进入页面获取招聘详情页的链接,通过链接再将数据进行爬取 一、列表页URL获取下方是列表页的url,其中jl后可直接用省份代替,kw即为搜索的关键词,p表示页数 https://sou.zhaopin.com/?jl=532&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90&p=1 修改后: https://sou.zhaopin.com/?jl=省份&kw=关键词&p=页数但是有一点特别重要,我们要想实现全站爬取,必然离不开循环,但是每一个省份对应的总页数是不一样的,我们必须获取每一个省份对应的总页数 然后制造一个url列表以此获取详情页链接
我们知道了列表url的构成以及获取了每个省份的最大页数,于是我们可以批量准确的生成列表url,我用“数据分析”为关键词,最后获取了300多个列表url def Get_list_Url(self): list_url=[] print("开始拼接列表页url") for a, b in zip(self.jl_list,self.Get_Page()): for i in range(int(b)): url = "https://sou.zhaopin.com/?jl=%s&kw=%s&p=%d" % (a,self.keyword,int(b)) with open("list_url.txt","a", encoding="utf-8") as f: f.write(url) f.write("\n") list_url.append(url) print("共拼接%d个列表页url"%(len(list_url))) return list_url现在我们呢已经有了列表url,这样我们就可以访问url以此获取其每个招聘信息的详情页url 二、详情页URL获取我们通过访问所有的列表url目的是为了获取每一个招聘信息的详情url,右键检查元素可发现,详情列表就在url a标签中
现在我们需要通过列表url获取详情url def Get_detail_Url(self): print("开始获取详情页url") with open("list_url.txt","r",encoding="utf-8") as f: list_url=f.read().split("\n")[0:-1] for url in list_url: self.Parser_Url(url) 三、获取数据我拿到了七千多条详情url,最后我们就可以利用这些url去获取数据 先写一个解析数据函数 def Parser_Data(self,text): html = etree.HTML(text) dic = {} try: dic["name"] = html.xpath('//h3[@class="summary-plane__title"]/text()')[0] except: dic["name"] = "" try: dic["salary"] = html.xpath('//span[@class="summary-plane__salary"]/text()')[0] except: dic["salary"] = "" try: dic["city"] = html.xpath('//ul[@class="summary-plane__info"]/li[1]/a/text()')[0] except: dic["city"] = "" with open(".//zhilian.csv", "a", encoding="utf-8") as f: writer = csv.DictWriter(f, dic.keys()) writer.writerow(dic)最后我们通过详情页url调用解析数据函数 def Get_Data(self): print("开始获取数据") detail_header = { 'user-agent': '', 'cookie': '' } with open("detail_url.txt","r",encoding="utf-8") as f: detail_url=f.read().split("\n")[0:-1] for url in detail_url: '''使用selenium访问''' # self.bro.get(url) # self.Parser_Data(self.bro.page_source) '''使用requests访问''' # text=requests.get(url,headers=detail_header,proxies={"http":'http://213.52.38.102:8080'}).text # self.Parser_Data(text) sleep(0.2)如果使用requests访问就需要修改请求头信息 总结利用requests+selenium的方法 加快了获取数据的速度,相较于之前 纯利用selenium的方式极大的缩短了时间 最后,我篇就说过 我之前写过一个智联招聘的爬虫,但是只是使用selenium去获取数据,现在又写了一个稍微好点的,我会把两个代码都放在公众号“阿虚学Python”中回复“智联爬虫”获取 |
CopyRight 2018-2019 实验室设备网 版权所有 |