智联招聘爬虫

mac2022-06-30  28

import requests from bs4 import BeautifulSoup import pandas as pd from pandas import DataFrame,Series import json url="https://fe-api.zhaopin.com/c/i/sou" params={ #参数 'start': '90', 'pageSize': '90', 'cityId': '489', 'workExperience': '-1', 'education': '-1', 'companyType': '-1', 'employmentType': '-1', 'jobWelfareTag': '-1', 'kw': 'python', 'kt': '3', } headers={ #头部信息 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', } url1="https://jobs.zhaopin.com/%s.htm" class Spider(): def __init__(self): self.word=input("请输入关键词:") page=input("请输入页数:") #self.word='python' #page=2 params['kw']=self.word #更改请求的关键词 self.df=DataFrame() #创建一个DataFrame对象 self.columns=['职位名称','工资','更新时间','地点','公司名称','需求人数','学历','工作经验','职责'] #列名 for i in range(0,int(page)*90,90): print(i) params['start']=i #更改开始页的页数 try: r=requests.get(url,params=params,headers=headers,timeout=10) #请求数据,加上try except防止请求失败程序停止 except: continue r.encoding='utf-8' #更改编码格式 self.get_data(r.text) #调用函数,函数是爬去数据,上面的所有都是用来请求的,这个函数才是解析请求返回来的数据的 def get_data(self,text): js=json.loads(text) for i in js['data']['results']: idd=i['number'] #id title=i['jobName'] #职位名称 #print(title) salary=i['salary'] #工资 updateDate=i['updateDate'] #更新时间 place=i['city']['display'] #工作地点 company=i['company']['name'] #公司名称 recruitCount=i['recruitCount'] #需求人数 eduLevel=i['eduLevel']['name'] #学历 workingExp=i['workingExp']['name'] #工作经验 u1=url1%idd #更改详情页的url, zhize=self.get_zhize(u1) #调用这个函数是为了爬取详情页页面的职责的 data=[title,salary,updateDate,place,company,recruitCount,eduLevel,workingExp,zhize] #所有的字段都整理成一个列表 self.df=self.df.append(Series(data,index=self.columns),ignore_index=True) #添加进入dataframe的数据结构中 print(title) self.df.to_csv('%s.csv'%self.word) #保存数据 def get_zhize(self,link): try: r=requests.get(link,headers=headers,timeout=10) #请求详情页 except: return "暂无" r.encoding='utf-8' #更改编码 soup=BeautifulSoup(r.text,'lxml') #解析数据 text=soup.select('div.describtion__detail-content')[0].text.strip() #职责 return text if __name__=="__main__": Spider()
最新回复(0)