实用脚本怎么看两队的历史交锋记录?

wen 实用脚本 2

实用脚本查看两队历史交锋记录

我理解你想用脚本快速查询两队的历史交锋数据,不过需要先说明:我无法直接访问实时体育数据库,所以不能给你一个"开箱即用"的脚本去抓取某网站的实时数据,但我可以给你几种可落地的方案。

实用脚本怎么看两队的历史交锋记录?


用公开 API(推荐)

很多体育数据平台提供 API,

  • Football-Data.org(足球,免费额度)
  • API-Football(RapidAPI 上,有免费层)
  • TheSportsDB(免费,覆盖面广)

示例:TheSportsDB 查询两队交锋

import requests
def get_h2h(team1_id, team2_id, api_key="3"):  # "3" 是公开测试key
    # 先查两队各自的历史比赛
    url = f"https://www.thesportsdb.com/api/v1/json/{api_key}/eventslast.php?id={team1_id}"
    events = requests.get(url).json().get("results", [])
    h2h = []
    for e in events:
        home = e.get("idHomeTeam")
        away = e.get("idAwayTeam")
        if {home, away} == {str(team1_id), str(team2_id)}:
            h2h.append({
                "date": e["dateEvent"],
                "home": e["strHomeTeam"],
                "away": e["strAwayTeam"],
                "score": f'{e["intHomeScore"]}-{e["intAwayScore"]}'
            })
    return h2h
# 示例:利物浦(133602) vs 曼联(133612)
for m in get_h2h(133602, 133612):
    print(m["date"], m["home"], m["score"], m["away"])

注意:免费版只能查"最近比赛",完整历史交锋通常需要付费 API 或自己爬取。


爬取公开网页(需遵守 robots.txt)

以某足球数据站为例(伪代码思路):

import requests
from bs4 import BeautifulSoup
def fetch_h2h(url):
    headers = {"User-Agent": "Mozilla/5.0"}
    r = requests.get(url, headers=headers, timeout=10)
    soup = BeautifulSoup(r.text, "html.parser")
    matches = []
    for row in soup.select("table.h2h tr")[1:]:
        cols = [c.get_text(strip=True) for c in row.find_all("td")]
        if len(cols) >= 4:
            matches.append({
                "date": cols[0],
                "home": cols[1],
                "score": cols[2],
                "away": cols[3],
            })
    return matches

注意事项:

  • 先看目标站 robots.txt 是否允许
  • 加延时 time.sleep(2),别把人家服务器打挂
  • 网站结构一变脚本就失效,需要维护

本地数据库累积

如果你长期跟踪某联赛,最稳的做法是:

  1. 用一个免费数据源(如 football-data.co.uk 的 CSV)下载历史赛季
  2. 存进 SQLite
  3. 查询时直接 SQL 联表
import sqlite3, pandas as pd
# 假设已把 matches 表导入 db
conn = sqlite3.connect("football.db")
df = pd.read_sql("""
    SELECT date, home_team, away_team, home_goals, away_goals
    FROM matches
    WHERE (home_team=? AND away_team=?)
       OR (home_team=? AND away_team=?)
    ORDER BY date DESC
""", conn, params=("Liverpool","Man United","Man United","Liverpool"))
print(df)

football-data.co.uk 提供英超等联赛的免费 CSV 历史数据,非常适合这种方案。


几个实用建议

需求 推荐方案
偶尔查一次 TheSportsDB / 网页手动查
经常查、要自动化 API-Football(付费稳定)
只做英超/主流联赛 football-data.co.uk + SQLite
要中文数据 懂球帝/雷速等接口(稳定性差,需自己维护)

如果你告诉我:

  1. 你关注哪种运动(足球/篮球/电竞?)
  2. 想要哪个联赛
  3. 是想一次性查询还是做成长期工具

我可以给你一个更具体的、能直接跑的脚本。

抱歉,评论功能暂时关闭!