网页爬取:如何获取法甲赛事表中全部比赛报告链接?
高效获取FBref Ligue 1比赛报告链接的方法
1. 直接解析页面HTML提取完整链接
这是最可靠的方案——不用自己构造URL,直接从页面表格里提取现成的链接,完全避开随机字符串的困扰。以Python为例,用requests获取页面内容,BeautifulSoup解析DOM:
import requests from bs4 import BeautifulSoup url = "https://fbref.com/fr/comps/13/calendrier/Scores-et-tableaux-Ligue-1" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") # 定位赛事表格 match_table = soup.find("table", class_="stats_table") report_links = [] # 遍历表格行,提取比赛报告链接 for row in match_table.find_all("tr"): # 匹配法语的"比赛报告"文本对应的a标签 report_tag = row.find("a", string="Rapport du match") if report_tag: full_link = report_tag["href"] # 拼接相对链接为完整URL if full_link.startswith("/"): full_link = f"https://fbref.com{full_link}" report_links.append(full_link) print(report_links)
2. 抓取页面内嵌的数据源或API接口
很多体育数据网站会在页面中嵌入JSON格式的原始数据,或提供未公开的API接口:
- 打开浏览器开发者工具(F12),切换到「Network」标签后刷新页面
- 筛选XHR/Fetch请求,查找包含赛事ID(比如13对应Ligue 1)或关键词「data」「api」的请求
- 直接请求这些接口,返回的JSON数据里会包含完整的比赛报告链接,无需解析HTML
FBref的部分数据来自关联的API接口,返回的结构中每个比赛条目都会带报告链接字段,直接提取即可。
3. 使用封装好的体育数据工具库(需合规)
一些第三方Python库专门封装了FBref等网站的爬取逻辑(比如fbref_scraper),调用库的内置方法就能直接获取比赛报告链接,省去自己写解析代码的步骤。注意要遵守网站的robots.txt规则,避免过度请求导致IP被封禁。
关键注意事项
- 必须设置合法的请求头(
User-Agent),模拟浏览器请求,防止被网站拦截 - 遵守网站
robots.txt协议,FBref允许爬取赛事日历类页面,但需控制请求频率 - 如果页面是滚动加载更多内容,需要用
selenium或playwright模拟浏览器行为,等待页面加载完成后再提取链接
内容的提问来源于stack exchange,提问作者JoJoWasACode
相关产品推荐
相关产品推荐

