You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python招聘门户爬取求助:无法提取职位标题等核心信息

招聘门户站点爬取求助

背景

我刚开始学习用Python爬招聘门户站点,目前写了以下代码:

import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome('C:/Users/ - Home/Desktop/Web Scraper/chromedriver.exe')
driver.get('https://www.mycareersfuture.gov.sg/search?sortBy=relevancy&page=0')

results =[]
content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')
listing= soup.find('div', class_ = 'card-list')
job = listing.find('p')
print(job)

问题

我无法从职位卡片中提取以下信息:

  • 职位标题(Job title)
  • 公司名称(Company name)
  • 薪资(Salary)

查了很多教程,大多说找h2标签或对应类的div,但目标站点结构不一样。比如职位标题的HTML结构如下,我尝试提取却失败:

<span data-cy="job-card__job-title" class="f4-5 fw6 mv0 dib mr2 brand-sec JobCard__jobtitle___3HqOw" style="overflow-wrap: break-word;">2402 - IT Manager [ Amber Rd /   /  5 days ]</span>

解决方案

修改后的代码

import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 初始化浏览器
driver = webdriver.Chrome('C:/Users/ - Home/Desktop/Web Scraper/chromedriver.exe')
driver.get('https://www.mycareersfuture.gov.sg/search?sortBy=relevancy&page=0')

# 等待页面加载完成(避免未加载完就获取源码)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, 'card-list__item'))
)

# 获取页面源码并解析
content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')

# 找到所有职位卡片
job_cards = soup.find_all('div', class_='card-list__item')
results = []

# 遍历每个卡片提取信息
for card in job_cards:
    # 用data-cy属性定位,比class更稳定
    job_title = card.find('span', attrs={'data-cy': 'job-card__job-title'}).text.strip()
    company_name = card.find('span', attrs={'data-cy': 'job-card__company-name'}).text.strip()
    salary = card.find('span', attrs={'data-cy': 'job-card__salary'}).text.strip()
    
    results.append({
        '职位标题': job_title,
        '公司名称': company_name,
        '薪资': salary
    })

# 转成DataFrame并输出
df = pd.DataFrame(results)
print(df)

# 关闭浏览器
driver.quit()

关键说明

  1. 等待页面加载:加入WebDriverWait确保职位卡片加载完成后再解析,避免因页面未加载完全导致找不到元素。
  2. 稳定定位元素:使用data-cy属性而非class定位元素,站点的class名称可能带随机哈希值(比如JobCard__jobtitle___3HqOw)容易变化,而data-cy是专为测试/爬虫设计的稳定属性。
  3. 遍历所有卡片:用find_all获取所有职位卡片,再逐个提取每个卡片内的信息,而非仅定位单个元素。

内容的提问来源于stack exchange,提问作者DepthVader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:31:00