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

使用Python BeautifulSoup无法读取指定div标签内容的求助

解决Yahoo Finance目标div无法获取的问题

问题原因分析

  1. 反爬拦截:urlopen默认请求头无浏览器标识,被Yahoo Finance拦截,返回的页面不含目标内容。
  2. 未指定解析器:BeautifulSoup初始化时未指定解析器,可能导致HTML解析异常。
  3. CSS变量类名不匹配:你使用的class包含预编译的CSS变量(如$lv2BgColor),这是Sass/Less的写法,实际页面渲染后这些类名会被替换为静态字符串,直接匹配原字符串无法找到目标元素。
  4. 动态内容加载:若目标div是JavaScript动态生成的,静态HTTP请求无法获取到渲染后的内容。

解决方案

方案1:添加请求头+指定解析器(静态请求)

用requests库替代urlopen,添加浏览器请求头模拟正常访问,同时指定BeautifulSoup解析器:

from bs4 import BeautifulSoup
import requests
import re

url = "https://finance.yahoo.com/"
# 模拟浏览器请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

# 发送请求获取页面
response = requests.get(url, headers=headers)
# 指定解析器解析HTML
bswebpage = BeautifulSoup(response.text, 'html.parser')

# 用正则匹配特征类名(避免CSS变量的影响)
# 你可以通过浏览器开发者工具查看实际渲染后的class,替换为更精准的匹配规则
target_divs = bswebpage.find_all("div", class_=re.compile(r'Bgc.*Bxz\(bb\).*Ovx\(a\)'))

print(target_divs)

方案2:使用Selenium处理动态内容

如果目标div是JS动态加载的,静态请求无法获取,需用Selenium模拟浏览器渲染:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import re

url = "https://finance.yahoo.com/"

# 配置无头浏览器(不打开可视化窗口)
chrome_options = Options()
chrome_options.add_argument('--headless=new')
chrome_options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')

# 启动浏览器并加载页面
driver = webdriver.Chrome(options=chrome_options)
driver.get(url)

# 获取渲染后的页面源码
bswebpage = BeautifulSoup(driver.page_source, 'html.parser')
# 正则匹配目标div
target_divs = bswebpage.find_all("div", class_=re.compile(r'Bgc.*Bxz\(bb\).*Ovx\(a\)'))

print(target_divs)
# 关闭浏览器
driver.quit()

关键提示

  • 打开Yahoo Finance页面,右键目标div选择「检查」,复制实际渲染后的class(而非CSS源码中的变量类名),可以让匹配更精准。
  • 若使用Selenium,需确保已安装对应浏览器的驱动(如ChromeDriver),并与浏览器版本兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:10:31