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

无需Selenium,用BS4获取网页弹窗元素的技术求助

解决方法:无需Selenium获取「Subjects & skills」数据

首先,你用find('div',class_='popper popper-popover subjects-skills')返回None的原因很明确:这个带popper类的弹窗容器是点击链接后才通过JavaScript动态生成的,初始页面的HTML里根本不存在这个元素,所以BeautifulSoup自然找不到它。

不过别担心,我们有两种不需要Selenium的方案:

方案1:直接抓取页面中隐藏的内容源

你注意到链接的data-content=".subjects-skills"属性了吗?这个属性告诉弹窗,要显示的内容来自页面中选择器为.subjects-skills的元素。这个元素大概率已经存在于初始HTML里,只是被CSS隐藏了(比如display: none)。

试试把你的代码改成这样:

subjectSkills = gameSoup.find('div', class_='subjects-skills')

如果能成功获取到这个元素,直接提取它的内容就行——BeautifulSoup不管元素是否显示,只要在HTML里就能找到。

方案2:抓取动态加载的API接口

如果方案1没找到目标元素,说明内容是通过AJAX异步加载的。这时候可以用浏览器开发者工具抓接口:

  • 打开目标页面,按F12打开开发者工具,切换到「Network」面板
  • 点击「Subjects & skills」链接,观察面板里新增的XHR请求
  • 找到返回弹窗内容的那个请求,复制它的URL
  • 用requests库直接请求这个URL,解析返回的JSON或HTML数据

这种方式比Selenium高效得多,完全不需要模拟浏览器操作。

另外你提到的修改data-arrow的值其实没用,这个属性只是控制弹窗箭头的显示状态,和内容是否加载到页面里没有关系,不用在这上面浪费精力~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:31:03