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

Python新手使用requests+bs4爬取FUTBIN球员页无返回结果问题

故障原因
  • 代码存在低级输入错误:定位元素的class属性值里混入了编辑器自动补全带进来的enter code here冗余内容,会直接导致元素匹配失败,目标元素的正确class值为player_name_players_table get-tp。
  • FUTBIN配置了基础反爬规则,requests默认的请求头会被站点识别为爬虫脚本,直接拦截请求,不会返回浏览器端看到的正常球员列表页面。这也是同逻辑爬取IMDB正常、爬FUTBIN失效的核心差异——IMDB未对默认请求头做拦截校验。
  • 额外注意:FUTBIN的球员列表为异步加载,初始请求返回的HTML源码中不会直接嵌入完整的球员表格数据,页面渲染完成后才会通过后台接口拉取全量球员信息填充到表格中。
修正方案

首先补全真实的浏览器请求头绕过基础反爬,同时修正元素选择器的输入错误,参考代码如下:

import requests
from bs4 import BeautifulSoup

# 请求头里的User-Agent替换为你自己浏览器的对应值即可
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"
}

resp = requests.get("https://www.futbin.com/players", headers=headers)
resp.encoding = resp.apparent_encoding
soup = BeautifulSoup(resp.text, features="html.parser")

# 注意球员链接是多个,用find_all批量获取,修正class参数的冗余内容
player_links = soup.find_all("a", class_="player_name_players_table get-tp")
for link in player_links:
    print(link.text.strip(), link.get("href"))

如果上述代码依然拿不到完整球员数据,直接打开浏览器开发者工具的「网络」面板,筛选XHR请求找到拉取球员列表的后台接口,直接请求接口拿结构化的JSON数据即可,解析效率比爬HTML高很多,也不容易受页面结构变动影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:03:26