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

基础web scraper循环重复输出第一条条目问题求助

问题根因

  • 你调用find()方法拿到的players是单个父级div容器,不是所有球员条目集合,直接遍历该对象只会拿到它的各类子节点,包含大量无效的文本、空白节点。
  • 循环内你始终调用父容器players的h3.a.text,取的永远是父容器下第一个h3标签的内容,没有用到循环变量,自然只会重复打印同一个名字。

修正后可运行代码

from bs4 import BeautifulSoup
import requests

# 添加请求头,避免被网站反爬拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
html_text = requests.get(
    'https://www.pff.com/news/nfl-quarterback-rankings-all-32-starters-ahead-of-the-2021-nfl-season',
    headers=headers
).text
soup = BeautifulSoup(html_text, 'lxml')
# 先定位内容父容器
content = soup.find('div', class_='m-longform-copy')
# 直接提取父容器下所有h3标签,每个h3对应一名球员
player_h3_list = content.find_all('h3')
for h3 in player_h3_list:
    # 增加判断过滤没有a标签的h3,避免运行报错
    if h3.a:
        print(h3.a.text)

补充说明

如果后续需要提取球员的其他关联信息,也可以基于每个h3标签,查找它的相邻同级节点获取排名、评分、评价内容等数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:27:03