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

BeautifulSoup爬取网页时无法获取div内全部span标签,如何提取薪资数据

问题原因
  • 首先检查你写的请求URL存在输入错误:原代码里的URL中Cairo- Egypt中间多了一个多余空格,会导致请求返回的不是目标岗位的正确页面,优先修正URL后再测试。
  • 排除URL错误后,拿不到完整span标签的核心原因是:该站点的薪资数值属于客户端动态渲染内容,初始HTML源码中仅包含固定的Salary标签,薪资数值是页面加载完成后由JavaScript异步加载、计算后插入到DOM中的。requests库只能获取未执行JS的初始静态源码,自然无法抓取到后续动态插入的薪资相关span标签。
解决方法

方案1:使用支持JS渲染的爬取工具(易上手)

用可以模拟浏览器运行、自动执行页面JS的工具(比如Selenium、Playwright),拿到完整渲染后的DOM结构再提取内容,示例代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化Chrome浏览器,需要提前安装对应版本的ChromeDriver
driver = webdriver.Chrome()
# 修正空格后的目标URL
url = "https://wuzzuf.net/jobs/p/xGYIYbJlYhsC-Senior-Python-Developer-Cairo-Egypt?o=1&l=sp&t=sj&a=python|search-v3|hpb"
driver.get(url)

try:
    # 等待薪资模块加载完成,最多等10秒
    salary_block = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "div.css-rcl8e5:nth-child(4)"))
    )
    # 直接提取模块完整文本即可拿到薪资信息
    print(salary_block.text)
finally:
    # 关闭浏览器
    driver.quit()

方案2:抓接口直接获取数据(效率更高)

打开浏览器开发者工具的「网络」面板,筛选XHR/fetch类型的请求,刷新页面后找到返回薪资数据的后端接口,直接模拟请求该接口获取结构化的JSON数据。这种方法不需要启动浏览器,爬取效率更高,适合批量爬取场景。


内容的提问来源于stack exchange,提问作者Mhd O.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:06:02