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

使用BeautifulSoup无法提取TradingView股票新闻页面指定href的问题求助

问题分析与解决方法

核心原因:动态加载内容

TradingView的新闻内容是JavaScript动态渲染的——直接用requests.get()获取的静态HTML源码里,根本没有你要找的带card-wSNJR2eq cardLink-wSNJR2eq类的<a>标签,自然搜不到结果。你可以把请求到的源码存成本地文件打开,会发现新闻区域只有占位结构,实际数据是页面加载后通过AJAX请求拉取的。

具体解决办法

方法1:用浏览器自动化工具渲染页面

模拟真实浏览器加载页面,等JS渲染完成后再解析:

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
from bs4 import BeautifulSoup

# 初始化Chrome浏览器(需提前安装对应版本的chromedriver)
driver = webdriver.Chrome()
driver.get("https://www.tradingview.com/symbols/NSE-TORNTPHARM/news/")

# 等待目标元素加载完成,最多等待10秒
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "card-wSNJR2eq"))
    )
finally:
    # 获取渲染后的完整页面源码
    page_source = driver.page_source
    driver.quit()

# 用BeautifulSoup解析页面
soup = BeautifulSoup(page_source, "html.parser")
target_links = soup.find_all("a", class_="card-wSNJR2eq cardLink-wSNJR2eq")
for link in target_links:
    print(link.get("href"))

方法2:直接调用API接口(更高效)

打开浏览器开发者工具(F12)切换到Network标签,刷新页面后筛选XHR/fetch请求,能找到TradingView获取新闻的API接口。直接请求该接口拿到JSON数据,里面会直接包含新闻链接、标题等信息,无需解析HTML。

额外注意事项

  • TradingView有反爬机制,频繁请求可能被封IP,建议添加合理的请求头、设置请求间隔,必要时使用代理。
  • 页面中的类名(如card-wSNJR2eq)是动态生成的,可能随时变化,调用API的方法稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:45:33