如何用Python的BeautifulSoup提取指定Span标签中的股票价格值
解决方案
问题原因
目标页面的股票价格是通过JavaScript动态渲染生成的,使用requests直接请求只能获取到未渲染的静态HTML源码,无法获取浏览器执行JS后生成的动态内容,因此找不到对应的<span>标签。
方法一:使用Selenium模拟浏览器渲染
通过模拟真实浏览器加载页面,等待JS执行完成后提取内容:
- 安装依赖:
pip install selenium
下载与浏览器版本匹配的驱动(如ChromeDriver),配置到环境变量或指定路径。
示例代码:
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 url = "https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse=SASA" # 初始化Chrome浏览器 driver = webdriver.Chrome() driver.get(url) try: # 等待目标价格元素加载完成(根据页面CSS定位) price_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "span.value.up")) ) stock_price = price_element.text print(f"股票价格:{stock_price}") finally: driver.quit()
方法二:直接调用API接口(更高效)
分析页面网络请求,找到获取股票数据的API接口,直接请求解析:
示例代码:
import requests import json url = "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/GetStockQuote" payload = json.dumps({"symbol": "SASA"}) headers = {'Content-Type': 'application/json'} response = requests.post(url, headers=headers, data=payload) data = response.json() # 提取并格式化价格 stock_price = data['d']['LastPrice'] formatted_price = f"{stock_price:,}".replace(".", ",") print(f"股票价格:{formatted_price}")
注:API接口可能随网站更新变化,若失效可通过浏览器开发者工具的网络面板重新查找对应请求。
内容的提问来源于stack exchange,提问作者Ozgonul
相关产品推荐
相关产品推荐

