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

Transfermarkt转会爬虫问题:仅能获取转入球队href,需获取转出球队

Transfermarkt 2022冬季转会第二页数据抓取修正方案

原代码存在的问题

  1. URL参数错误:原URL中page=2plus=2格式错误,应该改为page=2&plus=2,否则无法正确请求第二页数据
  2. 未定义核心变量:代码中直接使用table但未提前定位到转会数据表格
  3. 遍历逻辑缺陷:当前遍历会把所有球队链接混在一起,无法区分转出与转入球队

修正后的完整代码

import requests
from bs4 import BeautifulSoup
import re

# 修正URL参数,确保请求第二页数据
url = "https://www.transfermarkt.com/transfers/saisontransfers/statistik?ajax=yw0&altersklasse=&ausrichtung=&land_id=0&leihe=&page=2&plus=2&saison-id=2022&spielerposition_id=&transferfenster=wintertransfers"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"}

response = requests.get(url, headers=headers)
print(response.status_code)  # 正常请求应返回200

soup = BeautifulSoup(response.content, 'html.parser')

# 定位到转会数据表格(页面核心数据表格id为yw0)
table = soup.find('table', id='yw0')

# 初始化列表存储转出、转入球队的href链接
leaving_teams_href = []
joining_teams_href = []

# 遍历所有数据行(跳过表头,数据行带有odd/even类)
for row in table.find_all('tr', class_=['odd', 'even']):
    # 提取当前行内的所有球队链接
    team_links = row.find_all('a', href=re.compile('startseite/verein'))
    # 确保每行有两个球队链接(转出+转入)
    if len(team_links) >= 2:
        leaving_teams_href.append(team_links[0]['href'])  # 第一个是转出球队
        joining_teams_href.append(team_links[1]['href'])  # 第二个是转入球队

# 示例输出前5条数据
print("转出球队链接(前5个):")
for href in leaving_teams_href[:5]:
    print(href)

print("\n转入球队链接(前5个):")
for href in joining_teams_href[:5]:
    print(href)

代码关键说明

  • URL修正:修复了参数拼接错误,确保请求指向2022年冬季转会的第二页数据
  • 表格定位:通过表格idyw0精准获取转会数据表格,这是Transfermarkt ajax返回数据的标准表格id
  • 行级遍历:针对带有odd或even类的数据行进行遍历,自动跳过表头行
  • 链接区分:每一行的两个球队链接,第一个对应转出球队(Abgebender Verein),第二个对应转入球队(Aufnehmender Verein),分别存入独立列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:13:32