BOSS直聘岗位python爬取思路1(完整代码+详细介绍)

BOSS直聘岗位python爬取(完整代码+详细介绍)

  • 本文仅介绍关键思路,后续对字段的爬取文章到链接:
  • 爬取字段:详情链接、岗位名、岗位年限、岗位薪资范围、职位描述、岗位关键字、岗位地区、岗位地址
  • 爬取工具:Python
  • 所需第三方库:selenium,BeautifulSoup,json
  • !! 注意selenium必须要提前安装和浏览器版本一样的驱动器(本人在这步卡了好久,具体请看链接:)
  • 思路:(这样分段有利于中途报错不需要所有都重新跑)
    • 先利用selenium获取每个岗位的链接
    • 再遍历页面的链接获取每个岗位招聘信息的源代码
    • 再利用beautifulSoup对每个岗位的源代码进行分析获取字段。
  • 爬取内容:boss直聘对岗位最多只开放10页,所以我们最多只能爬取10页的岗位,如有其他解决办法欢迎在下方留言

需要源码的关注公众号: 一个不是小白的数据小白

后续对字段的爬取代码进入
博文:https://blog.csdn.net/weixin_52001949/article/details/135480669
在这里插入图片描述

一、 首先安装指定库文件

  1. windows按win键直接输入anaconda Prompt
  2. 然后打开直接复制以下代码,安装库文件
    在这里插入图片描述
pip install selenium
pip install BeautifulSoup
pip install json
pip install time

二、 获得cookie文件

利用selenium获取指定cookie

  1. 在进入网页之后手动扫码登录(这样最快),设置了time.sleep(15),意思是等待15s
from selenium import webdriver
import time
import json
def 获取cookie(url,cookie文件名):
    #1. 打开浏览器
    driver = webdriver.Chrome()
    #2. 进入网页
    driver.get(url)  
    #3. 进入网页之后,手动点击登录页码快速登录进去
    time.sleep(15)
    #4.在15s之内登录,获取所有cookie信息(返回是字典)
    dictCookies = driver.get_cookies()  
    #5.是将dict转化成str格式
    jsonCookies = json.dumps(dictCookies)  
    # 登录完成后,自动创建一个boss直聘.json的文件,将cookies保存到该环境根目录下
    with open(cookie文件名, "w") as fp:
        fp.write(jsonCookies)
        print('cookies保存成功!')
url='https://www.zhipin.com/web/geek/job-recommend'
获取cookie(url,cookie文件名='boss直聘.json')

三、获取每个岗位详情的链接

  1. 查看每个页面的链接
    https://www.zhipin.com/web/geek/job?query=bi&city=101210100&page=1
    https://www.zhipin.com/web/geek/job?query=bi&city=101210100&page=2
    依次类推遍历每个链接

在这里插入图片描述

  1. 获取每个岗位的链接
    1. 找到链接在源代码里的位置,看到每个链接:
      -href= “job_detail/fc617e27bdeb1f581Hd729–FlZR.html?lid=aThHvPnPLRe.search.1&securityId=qB9QmXRG637rI-C1O4eOujVwuJyQAFng5ryLPqak83VjpKskQM0S_BvMqHfwzTk3913NcAIyPJdop63oDcung_hoNkHrnZizG-3kgAvSvFHZo7MioJIkk4pCazN-oH1XO2sJXNpP29g~&sessionId=”
      在这里插入图片描述
    1. 分析链接所在位置,发现链接所在a标签下的class=‘job-card-left’,ctrl+f查找下该页面存在多少个这个class的a标签,一共有30个这种链接,说明页面一共有30个岗位信息链接,且一个标签里就有一个链接。
      在这里插入图片描述
    1. 利用beatifulsoup对源代码进行链接的爬取
soup.find_all(class_='job-card-left') 
#获取所有class=job_card_left_elements'的标签

在这里插入图片描述
-遍历每个元素,取出href链接

   for element in job_card_left_elements:
        href = element['href']
        full_link = 'https://www.zhipin.com' + href
        '将每个链接放到一个空列表里'
        详情列表.append(full_link)

在这里插入图片描述
该部分完整代码

代码解释:
```python
from selenium import webdriver
import time
import json
from bs4 import BeautifulSoup

'1. 建立一个空列表存储链接'
详情列表=[]
'2. 遍历每个页面,获取页面的源代码'
for i in range (1,11):
    print(i)
    boss = webdriver.Chrome()
    # 1.打开网页
    url =f'https://www.zhipin.com/web/geek/job?query=bi&city=101210100&page={i}'
    boss.get(url)  
    #2.注入cookie
    with open(r"E:\Anacada__\工作项目\爬虫\boss直聘.json", "r") as fp:
        jsonCookies = fp.read()
    #3. 将 JSON 格式的 Cookie 转换为字典
    cookies = json.loads(jsonCookies)
    #4.添加 Cookie 到 WebDriver 对象
    for cookie in cookies:
            boss.add_cookie(cookie)
    #5.进入网页等待6s加载,然后获取源代码
    boss.get(url)
    time.sleep(6)
    boss_text = boss.page_source
'3. 根据页面源代码,获取每个页面的岗位链接'   
    #1.将源代码加载进beatifulsoup
    soup = BeautifulSoup(boss_text, 'html.parser')
    #2.查找所有 class="job-card-left" 的元素
    job_card_left_elements = soup.find_all(class_='job-card-left')
    # 遍历每个元素,获取 <a> 标签的 href 链接
    for element in job_card_left_elements:
        href = element['href']
        full_link = 'https://www.zhipin.com' + href
        详情列表.append(full_link)
            

四、获取每个详情链接的源代码

  • 获取了每个页面的链接了之后,就可以遍历访问每个链接了
  • 这里先获取每个链接的源代码是为了避免中途出错,selenium访问浏览器速度有限,10个页面300个链接需要访问300次,源代码获取了之后再获取字段信息会很快。
  • selenium获取源代码
count=0
源代码=[]
for i in 详情列表:
    count=count+1
    boss = webdriver.Chrome()
    # 打开网页
    url =f'{i}'
    boss.get(url)  
    #2.注入cookie
    with open(r"E:\Anacada__\工作项目\爬虫\boss直聘.json", "r") as fp:
        jsonCookies = fp.read()
    '1. 将 JSON 格式的 Cookie 转换为字典'
    cookies = json.loads(jsonCookies)
    ' # 添加 Cookie 到 WebDriver 对象'
    for cookie in cookies:
            boss.add_cookie(cookie)
    boss.get(url)
    time.sleep(5)
    boss_text = boss.page_source
    源代码.append(boss_text)

五、获取网页源代码的完整代码:

from selenium import webdriver
import time
import json
import random
from bs4 import BeautifulSoup
import pandas as pd 


def 获取cookie(url,cookie文件名):
    driver = webdriver.Chrome()
    driver.get(url)  
    time.sleep(15)
    dictCookies = driver.get_cookies()  #获得所有cookie信息(返回是字典)
    jsonCookies = json.dumps(dictCookies)  #dumps是将dict转化成str格式
    # 登录完成后,将cookies保存到本地文件
    with open(cookie文件名, "w") as fp:
        fp.write(jsonCookies)
        print('cookies保存成功!')
    
获取cookie('https://www.zhipin.com/web/geek/job-recommend',cookie文件名='boss直聘.json')

详情列表=[]
for i in range (1,11):
    print(i)
    boss = webdriver.Chrome()
    # 打开网页
    url =f'https://www.zhipin.com/web/geek/job?query=bi&city=101210100&page={i}'
    boss.get(url)  
    #2.注入cookie
    with open(r"E:\Anacada__\工作项目\爬虫\boss直聘.json", "r") as fp:
        jsonCookies = fp.read()
    # 将 JSON 格式的 Cookie 转换为字典
    cookies = json.loads(jsonCookies)
    # 添加 Cookie 到 WebDriver 对象
    for cookie in cookies:
            boss.add_cookie(cookie)
    boss.get(url)
    time.sleep(6)
    boss_text = boss.page_source
    # print("2. 获取页面源代码")
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(boss_text, 'html.parser')
    # 查找所有 class="job-card-left" 的元素
    job_card_left_elements = soup.find_all(class_='job-card-left')
    # 遍历每个元素,获取 <a> 标签的 href 链接
    for element in job_card_left_elements:
        href = element['href']
        full_link = 'https://www.zhipin.com' + href
        详情列表.append(full_link)
    count=0
源代码=[]
for i in 详情列表:
    count=count+1
    boss = webdriver.Chrome()
    # 打开网页
    url =f'{i}'
    boss.get(url)  
    #2.注入cookie
    with open(r"E:\Anacada__\工作项目\爬虫\boss直聘.json", "r") as fp:
        jsonCookies = fp.read()
    '1. 将 JSON 格式的 Cookie 转换为字典'
    cookies = json.loads(jsonCookies)
    ' # 添加 Cookie 到 WebDriver 对象'
    for cookie in cookies:
            boss.add_cookie(cookie)
    boss.get(url)
    time.sleep(random.uniform(5,15))
    boss_text = boss.page_source
    源代码.append(boss_text)

六、分析页面详情,获取对应字段

  • 需要获取的字段
    岗位名、岗位薪资、地区、工作地址、要求年限、学历、职位描述、岗位职责
    公司名、公司规模、公司介绍、公司成立日期、行业

后续对字段的爬取代码进入
博文:https://blog.csdn.net/weixin_52001949/article/details/135480669

在这里插入图片描述
在这里插入图片描述

代码架构说明

  • 配置好招聘的要求之后
    在这里插入图片描述
    在这里插入图片描述
  • 选定不同功能来爬取数据
    在这里插入图片描述
    在这里插入图片描述
  • 36
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值