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

BOSS直聘岗位python爬取

引用上篇对boss直聘每个岗位的源代码获取了之后,对字段的爬取

前言:https://blog.youkuaiyun.com/weixin_52001949/article/details/135452969
如有问题可私信关注博主
在这里插入图片描述

  • 工具:Python
  • 库文件:BeautifulSoup

1. 需要获取的字段

岗位名、岗位薪资、地区、工作地址、要求年限、学历、职位描述、岗位职责
公司名、公司规模、公司介绍、公司成立日期、行业
在这里插入图片描述
在这里插入图片描述

2 .利用beatifulsoup进行解析

将每个字段的信息放在一个列表里,每个岗位一个列表,
岗位=[‘bi1’,‘bi2’,…] ,公司名=[‘a’,‘b’,‘c’,…]
最后用pandas中的Pandas中的DataFrame做成表格输出excel。

  • 示例爬取

1. 关键字爬取

思路:

  • 定位class,用find_all 获取该ul下的所有li
  • 遍历所有li,获取li内的字符串
  • 在这里插入图片描述
    '职位关键字'
    职位关键字_text = soup.find(class_='job-keyword-list')
    '如果找不到的话该class,报错'
    if 职位关键字_text:
        text = [li.get_text(strip=True) for li in 职位关键字_text.find_all('li')]
    else :
        text='无'
    职位关键字.append(text)

在这里插入图片描述

2. 公司信息字段

  • 字段内容在p标签内,标签内含有一个 的标签。
  • 获取思路:找到包含i标签中class=‘icon-scale’ 的p标签
    在这里插入图片描述

select 方法返回的是一个列表,包含所有匹配的元素。如果没有找到匹配的元素,它会返回一个空列表。要注意的是,select 方法总是返回一个列表,即使只有一个元素匹配。如果你只对第一个匹配的元素感兴趣,可以使用 select_one 方法,它返回单个元素而不是列表。

  • soup.select_one:
  • 包含选择器: 选择包含类名为 .icon-scale 的 标签的

    标签。返回的是一个元素。

soup.select("p:has(i.icon-scale)")

示例代码:

公司规模=[]
公司规模_text = soup.select_one('p:has(i.icon-scale)')
if 公司规模_text:
   text=公司规模_text.get_text(strip=True)
   公司规模.append(text)
公司行业字段获取

同理找到class为icon-industry

在这里插入图片描述

  公司行业_text = soup.select_one('p:has(i.icon-industry)')
    if 公司行业_text:
        text=公司行业_text.get_text(strip=True)
        公司行业.append(text)

完整代码扫码获得
在这里插入图片描述

### 编写Python爬虫程序抓取Boss的大数据工作岗位列表 为了实现这一目标,通常会采用`requests`库发送HTTP请求并利用`selenium`框架模拟浏览器行为以应对JavaScript加载的内容。此外,BeautifulSoup或lxml库可用于解析HTML文档。 #### 使用Selenium和Requests组合进行网页抓取 考虑到部分网站具有反爬机制,接使用`requests`可能无法获取到动态加载的数据,因此引入了`selenium`来处理这种情况。下面是一个简单的例子: ```python from selenium import webdriver import time from bs4 import BeautifulSoup def init_driver(): options = webdriver.ChromeOptions() options.add_argument('headless') # 设置无头模式 driver = webdriver.Chrome(options=options) return driver def get_job_listings(url, page_limit=5): job_data = [] try: driver = init_driver() for i in range(1, page_limit + 1): url_with_page = f"{url}&page={i}" driver.get(url_with_page) soup = BeautifulSoup(driver.page_source, 'html.parser') jobs = soup.find_all('div', class_='job-primary') for job in jobs: title = job.select_one('.info-primary .name').get_text(strip=True).replace("\n", "") salary = job.select_one('.red').text.strip() if job.select_one('.red') else "N/A" company_name = job.select_one('.company-text h3 a').text.strip() info_dict = { 'title': title, 'salary': salary, 'company_name': company_name } job_data.append(info_dict) time.sleep(2) # 延迟访问减轻服务器压力 finally: driver.quit() return job_data ``` 此段代码定义了一个函数`get_job_listings()`,它接收一个URL参数作为入口地址,并设置最大翻页次数为5(可根据需求调整)。通过循环迭代不同页面编号构建完整的链接字符串,调用ChromeDriver实例化对象打开相应页面后读取其源码,再借助于BeautifulSoup完成DOM树结构分析提取所需字段[^1]。 请注意,在实际操作前应当查阅目标站点的服务条款确保合法合规;另外频繁请求可能会触发IP封禁措施,故而适当加入延时等待很有必要。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值