Transfermarkt转会爬虫问题:仅能获取转入球队href,需获取转出球队
Transfermarkt 2022冬季转会第二页数据抓取修正方案
原代码存在的问题
- URL参数错误:原URL中
page=2plus=2格式错误,应该改为page=2&plus=2,否则无法正确请求第二页数据 - 未定义核心变量:代码中直接使用
table但未提前定位到转会数据表格 - 遍历逻辑缺陷:当前遍历会把所有球队链接混在一起,无法区分转出与转入球队
修正后的完整代码
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年冬季转会的第二页数据
- 表格定位:通过表格id
yw0精准获取转会数据表格,这是Transfermarkt ajax返回数据的标准表格id - 行级遍历:针对带有
odd或even类的数据行进行遍历,自动跳过表头行 - 链接区分:每一行的两个球队链接,第一个对应转出球队(Abgebender Verein),第二个对应转入球队(Aufnehmender Verein),分别存入独立列表
内容的提问来源于stack exchange,提问作者Aleya
相关产品推荐
相关产品推荐

