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

使用BeautifulSoup爬取股票数据时如何遍历全部目标元素

问题根因

代码中定位的class="tBody"的div节点在整个目标页面中仅存在1个,是所有股票数据行的外层父容器,并非单条股票对应的独立条目,因此for循环只会执行1次,自然只能输出第一条匹配到的内容,无法遍历全部股票数据。

修正方案

先定位到外层的tBody容器,再在容器内部提取每一条股票数据对应的行节点(即class为satir的li元素,每个li对应一支股票的完整数据),之后遍历这些行节点提取所需字段即可。

修正后可运行代码
import requests
from bs4 import BeautifulSoup

url = "https://bigpara.hurriyet.com.tr/borsa/hisse-fiyatlari/"

r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
# 定位外层表格容器
table_wrapper = soup.find("div", attrs={"class": "tBody"})
# 提取所有单支股票对应的行条目
stock_rows = table_wrapper.find_all("li", attrs={"class": "satir"})

for row in stock_rows:
    stock_title = row.a.get_text(strip=True)
    current_price = row.find("li", attrs={"class": "cell004"}).get_text(strip=True)
    print("{} {}".format(stock_title, current_price))
核心调整说明
  • 原逻辑错误将外层容器作为遍历对象,改为先取容器、再取容器内的所有数据行作为遍历对象,才能覆盖全部股票条目
  • 文本提取使用get_text(strip=True)替代直接取.string,可适配标签嵌套的场景,避免出现取值为None的问题
  • 外层容器因为全页唯一,用find替代find_all更符合页面结构逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:09:15