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

使用BeautifulSoup进行网页爬取时无法定位目标span类元素问题

问题成因
  • 该站点基于Angular框架构建,所有带ng-前缀类名的元素都是客户端JavaScript运行后动态生成的。你使用requests发起请求仅能获取到未执行前端逻辑的初始HTML骨架,此时你要查找的span元素尚未被插入到DOM结构中,因此BeautifulSoup返回空列表。
  • 即使调整为定位span所属父级div的写法也会返回空,本质原因都是静态请求无法拿到动态渲染的内容,和元素定位路径的层级没有关系。
可选解决思路
  • 使用支持浏览器渲染的自动化工具(如Selenium、Playwright)发起请求,等待页面JS执行完成、元素加载完毕后再执行元素提取操作,示例代码如下:
from playwright.sync_api import sync_playwright
from bs4 import BeautifulSoup as bs

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://boardgamegeek.com/boardgame/174430/gloomhaven")
    # 等待目标元素加载完成
    page.wait_for_selector(".ng-scope.ng-isolate-scope", timeout=10000)
    html = page.content()
    s2 = bs(html, "html.parser")
    var2 = s2.find_all('span',{'class':'ng-scope ng-isolate-scope'})
    browser.close()
  • 更稳定的方案是通过站点公开的结构化数据接口获取数据,无需解析前端页面,避免动态渲染、类名变更带来的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:45:04