python使用bs4实现爬取老板直聘静态页面

  

python使用bs4实现爬取老板直聘静态页面?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>思路:

1,将需要查询城市列表,通过城市接口转换成相应的代码码

2,遍历城市,职位生成url

3,通过url获取列表页面信息,遍历列表页面信息

4,再根据列表页面信息的job_link获取详情页面信息,将需要的信息以字典数据的形式存在列表数据里

5,判断列表页面是否有下一页,重复步骤3、4;同时将列表数据一直传递下去

6,一个城市,职位url爬取完后,将列表数据接在列表datas_list后面,重复3,4,5

7,最后将列表datas_list的数据,遍历写在Excel里面

<强>知识点:

1,将响应内容以json形式输出,解析json并取值

2,汤的选择()和find_all()和()方法使用

3,异常异常的使用

4, wldt创建编辑Excel的使用

导入请求,时间,xlwt
  从bs4进口BeautifulSoup
  
  类MyJob ():
  def __init__(自我、mycity myquery):
  自我。城市=mycity
  自我。查询=myquery
  自我。list_url=癶ttps://www.zhipin.com/job_detail/& # 63;查询=% s&城市=% s&行业=,位置=? (self.query self.city)
  自我。数据=[]
  自我。头={
  & # 39;权威# 39;:& # 39;www.zhipin.com& # 39;
  & # 39;方法# 39;:& # 39;得到# 39;
  & # 39;计划# 39;:& # 39;https # 39;
  & # 39;接受# 39;:& # 39;text/html, application/xhtml + xml应用程序/xml; q=0.9,图像/webp图像/apng */*; q=0.8 & # 39;
  & # 39;accept-encoding& # 39;: & # 39; gzip、缩小、br # 39;
  & # 39;接收语言# 39;:& # 39;应用,zh型;q=0.9 & # 39;
  & # 39;cache - control # 39;: & # 39;信息=0 & # 39;
  & # 39;饼干# 39;:& # 39;lastCity=101210100; uab_collina=154408714637849548916323; toUrl=/; c=1558272251; g=-; l=l=% 2 fwww.zhipin.com % 2熔化炉% 2 flogin.html& r=;Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1555852331, 1556985726, 1558169427, 1558169427;亲自=40505844.1544087205.1558169426.1558272251.41.14.4.31;Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1558272385 & # 39;
  & # 39;推荐人# 39;:& # 39;https://www.zhipin.com/& # 63; ka=header-logo& # 39;
  & # 39;upgrade-insecure-requests& # 39;: & # 39; 1 & # 39;
  & # 39;用户代理# 39;:& # 39;Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/70.0.3538.110 Safari 537.36 & # 39;
  }
  
  #将城市转化码为代码
  def get_city(自我,city_list):
  city_url=癶ttps://www.zhipin.com/wapi/zpCommon/data/city.json"#获取城市
  json=requests.get (city_url) . json ()
  zpData=json (“zpData") (“cityList")
  列表=[]
  在city_list城市:
  在zpData data_sf:
  在data_sf data_dq [“subLevelModelList"]:
  如果城市==data_dq [“name"]:
  list.append (data_dq [“code"])
  返回列表
  
  #获取所有页内容
  def get_job_list(自我、url、数据):
  打印(url)
  html=请求。get (url,标题=self.header)。text
  汤=BeautifulSoup (html、& # 39; html.parser& # 39;)
  工作=soup.select (“.job-primary")
  工作职位:
  data={}
  #招聘id
  数据(“job_id")=job.find_all (“div" attrs={“class":“info-primary"}) [0]; (“a") . get (“data-jobid")
  #招聘链接
  数据(“job_link")=癶ttps://www.zhipin.com"+ job.find_all (“div" attrs={“class":“info-primary"}) [0]; (“a") . get (“href")
  #招聘岗位
  数据(“job_name")=job.find_all (“div" attrs={“class":“info-primary"}) [0]; (“div" attrs={“class":“job-title"}) .get_text ()
  #薪资
  数据(“job_red")=job.find_all (“div" attrs={“class":“info-primary"}) [0]; (“span" attrs={“class":“red"}) .get_text ()
  #地址#工作年限#学历
  数据(“job_address")=job.find_all (“div" attrs={“class":“info-primary"}) [0]; (“p") .get_text () .split (““)
  #企业链接
  数据(“job_company_link")=job.find_all (“div" attrs={“class":“info-company"}) [0]; (“a") . get (“href")
  #企业信息
  数据(“job_company")=job.find_all (“div" attrs={“class":“info-company"}) [0]; (“p") .get_text () .split (““)
  #老板链接
  数据(“job_publis_link")=job.find_all (“div" attrs={“class":“info-publis"}) [0]; (“img") . get (“src")
  #嘘声信息
  数据(“job_publis")=job.find_all (“div" attrs={“class":“info-publis"}) [0]; (“h4") .get_text () .split (““)
  time . sleep (5)
  self.get_job_detail(数据)#获取工作详情页内容
  打印(数据)
  datas.append(数据)#将某条工作添加到数据中,直到将当前页添加完
  
  试一试:
  next_url=soup.find (“div" attrs={“class":“page"}); (“a" attrs={“class":“next"}) . get (“href")
  #如果next_url[1]==?”: #第二页自动抛异常
  如果next_url“javascript:“: #最后一页自动抛异常
  提高异常()
  除了例外e:
  print(“最后一页了,% s"% e)
  返回数据#返回所有页内容
  其他:
  time . sleep (5)
  next_url=癶ttps://www.zhipin.com"+ next_url
  自我。get_job_list (next_url数据)
  返回数据#返回所有页内容
  
  #获取详情页内容
  def get_job_detail(自我、数据):
  打印(数据(“job_link"))
  html=requests.get(数据(“job_link"),头=self.header)。text
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

python使用bs4实现爬取老板直聘静态页面