懂球帝采集字段说明
采集链是固定的。一场比赛先请求总览,总览里的队伍 id 再请求队伍资料和阵容,阵容里的人员 id 再请求人员资料。下面每张表的响应都原样放在 MySQL 的 `body` 里。列表上的名称、比分、运动项目是从这份原文里取出的少量索引,方便翻页,不替代原文。
编号规则:接口里经常同时出现短 id 和 8 位 id。8 位 id 以 `5` 开头,短 id 是去掉这个 `5` 和紧跟着的 `0`。例如队伍 `174008` 与 `50174008` 是同一支队伍,人员 `782206` 与 `50782206` 是同一个人。库里的主键用 8 位 id。
样本比赛 `54623677`:阿达莱特古库对安卡拉力量,全场 1-2。
比赛总览
`GET https://www.dongqiudi.com/api/data/overview/match/{match_id}`
有的编号返回 `[]`。有的返回一个壳:`match_status` 有值,但 `events` 和 `statistics` 是空数组。这两种都按原文保存。只有请求失败(超时、连接错误、HTTP 不是 200)才记入连续失败。
| 字段 | 含义 |
|---|---|
| status | 接口结果。`0` 表示这份响应成功,不是比赛状态 |
| match_status | 比赛状态。`Fixture` 未开始,`Playing` 进行中,`Played` 已结束,`Postponed` 延期,`Suspended` 中断,`Cancelled` 取消 |
| events | 事件时间轴。键是分钟,如 `30`、`45+45`、`90+3`、`90+90` |
| statistics | 双方技术统计。没有数据时是空数组 `[]`,有数据时是对象 |
| archive | 关联的一篇战报。没有时是空数组 |
| gifCollection | 比赛动态图列表。这场样本是空数组 |
| gif_name | 动态图区块标题,样本为「比赛动态」 |
| tendencies | 按分钟的攻势走势。没有时是 `null` |
| highscorepersons | 双方评分最高的球员。没有时是 `null` |
| loop | 建议再次请求的间隔,单位秒。样本是 `10` |
events 里的一条事件
每一分钟下面有 `teamAEvents`(主队)、`teamBEvents`(客队)。半场、全场放在 `neutralEvents`。
| 字段 | 含义 |
|---|---|
| code | 事件类型,见下表 |
| minute_extra | 补时分钟。键 `90+3` 里这条是 `3`。半场节点 `45+45` 上的 `45`、全场节点 `90+90` 上的 `90` 是分隔标记,不是补时 45 分钟或 90 分钟 |
| person | 球员名。半场、全场这两条写的是「半场」「全场」 |
| person_id | 8 位人员 id。半场、全场为 `0` |
| person_href | App 跳转,形如 `dongqiudi:///player/50782206` |
| score | 事件发生后的比分,如 `1-0`。换人、黄牌通常是空字符串 |
| reason | 原因。黄牌样本里出现过「犯规」「对判罚表达异议」 |
| event_pic | 事件图标地址 |
| sort | 同一分钟内的排序 |
这场样本里出现过的 `code`:
| code | 含义 |
|---|---|
| G | 进球 |
| PG | 点球进球 |
| AS | 助攻 |
| YC | 黄牌 |
| Y2C | 两黄一红 |
| SI | 换上 |
| SO | 换下 |
| HT | 半场 |
| FT | 全场。样本的最终比分写在这里:`1-2` |
走势里还会出现 `COR`,表示角球。角球不在这场的 `events` 列表里,标在 `tendencies` 上。
statistics
`team_A` 是主队,`team_B` 是客队。
| 字段 | 含义 |
|---|---|
| id | 短 id。样本主队是 `174008` |
| name | 全名 |
| short_name | 简称 |
| logo | 队徽 |
| href | 8 位 id 跳转,样本为 `dongqiudi:///team/50174008` |
| formation | 阵型。这场是空字符串,阵型不在这个接口里 |
| rate | 球队评分。这场是 `0` |
| starting_lineup_win_rate | 首发胜率。这场是 `0` |
`list` 的每一行是一项对比。
| 字段 | 含义 |
|---|---|
| type | 中文项名。样本有控球率、角球、射门、射正、进攻、危险进攻、黄牌、红牌 |
| en_type | 英文项名。样本全是空字符串 |
| team_A.value / team_B.value | 原始数值 |
| per | 双方合计后的占比。控球率 53 对 47;射门 3 对 5 则是 38 对 63 |
| class | 数值较小的一侧是 `ranks_l`,较大的一侧是空字符串 |
archive
| 字段 | 含义 |
|---|---|
| title | 战报标题 |
| scheme | 新闻跳转,形如 `dongqiudi:///news/6565852` |
| thumb | 缩略图 |
| description | 摘要。样本是空字符串 |
| commentsTotal | 评论数 |
tendencies
`data` 大约每分钟一个点。
| 字段 | 含义 |
|---|---|
| x | 点的序号 |
| y | 攻势,大约在 -100 到 100 |
| minute | 只在 0、15、30、半场、60、75、90 这些刻度上有字 |
| team_a_goal / team_b_goal | 名字像进球,实际是这一分钟要标出来的事件。进球、点球、角球、两黄一红都会出现。角球的 `code` 是 `COR` |
| team_a_score / team_b_score | 不是比分。样本全场 1-2,这两个数是 `2968` 和 `2250`,是双方走势累计 |
事件点里面的 `person.id` 是短 id。`events` 里的 `person_id` 才是 8 位 id。`is_home_team` 在样本里主客都是 `"0"`,不能拿来区分主客。
highscorepersons
`team_A_person` 和 `team_B_person` 是双方评分最高的人。
| 字段 | 含义 |
|---|---|
| person_id | 8 位人员 id |
| person | 姓名 |
| logo | 头像 |
| rate | 评分。样本主队 7.1,客队 6.7 |
| is_mvp | 是否全场最佳。样本都是 `0` |
| events | 这个人在本场的事件,样本里只带了进球 |
| scheme | `dongqiudi://v1/data/player/{person_id}` |
| statistics | 分项数据。样本是空的 |
| height、shirtnumber、position、nationality_name、foot | 这场都是空的。完整档案在人员资料接口 |
队伍资料
`GET https://www.dongqiudi.com/sport-data/soccer/biz/dqd/team/sample/{team_id}?app=dqd&lang=zh-cn`
足球和篮球都走这个地址。`team_id` 用 8 位 id。
| 字段 | 含义 |
|---|---|
| team_id | 8 位队伍 id |
| team_name | 中文名 |
| team_en_name | 英文名 |
| team_logo | 队徽 |
| team_logo_md5 | 队徽校验。样本常为空 |
| country | 国家 |
| country_logo | 国旗 |
| city | 城市 |
| address | 地址 |
| telephone | 电话 |
| 邮箱 | |
| founded | 成立年份 |
| venue_name | 球场 |
| venue_capacity | 球场容量 |
| color | 队色 |
| rank | 一段展示文字,例如世界排名和总身价,不是纯数字 |
| market_value | 身价,单位是欧元的整数字符串。`5530000` 即 553 万欧元 |
| nickname | 绰号 |
| bg_img | 背景图 |
| sport_type | `soccer` 或 `basketball`。决定下面用哪份阵容接口 |
| type | `club` 俱乐部,或国家队等其他值 |
| league_id | 联赛 id。样本里见过 `"0"` |
| description | 若干行展示。每行有 `key`、`value`,有的带 `scheme`。样本有「中超排名」「联赛战绩」「最近5场」 |
| info_url | 资料页 H5 |
| tabs | 页签。`title` 是名称,`type` 是打开方式(`native_news`、`native_schedule`、`h5` 等),`url` 是页签地址,`tab` 是页签代码 |
| scheme | 样本里是用户主页跳转,不是队伍跳转 |
| pk_btn | 对比按钮。`scheme` 里用的是短 id,如 `dongqiudi:///data_pk/team/328` |
这份资料没有队员列表。队员 id 在下一份阵容接口里。
足球阵容
`GET https://www.dongqiudi.com/sport-data/soccer/biz/dqd/v1/team/member_v2/{team_id}?app=dqd&lang=zh-cn`
| 字段 | 含义 |
|---|---|
| code | `0` 表示成功 |
| message | 错误说明。成功时是空字符串 |
| data.list | 分组。一组一个位置 |
| seasons | 历史阵容季列表 |
分组:
| 字段 | 含义 |
|---|---|
| type | `coach` 教练组,`attacker` 前锋,`midfielder` 中场,`defender` 后卫,`goalkeeper` 门将 |
| title | 中文组名 |
| data | 这一组的人 |
球员行:
| 字段 | 含义 |
|---|---|
| person_id | 8 位人员 id。人员资料接口用这个 |
| person_name | 中文名 |
| person_en_name | 英文名 |
| person_logo | 头像 |
| shirtnumber | 球衣号 |
| age | 年龄,带「岁」,如 `29岁` |
| type | 位置代码,与分组的 `type` 相同 |
| scheme | `dongqiudi:///player/{person_id}` |
| nationality_name | 国籍。有的行是空的,国籍以头像旁的 `nationality_logo` 和图标为准,人员资料接口里有文字 |
| nationality_logo | 国旗 |
| other_logo | 其他标志,可能是空数组 |
| captain_logo | 队长标志。不是队长时为空 |
| weekly_salary | 周薪。空字符串表示没有 |
| statistic | 一组展示数字。每一项是只有一个键的对象,样本见过「出场」「进球」「助攻」「身价(欧)」。身价的值是「120万」这种展示文字,不是欧元整数 |
| transfer_data | 转会信息。样本里见过 `null` |
教练行没有球衣号。`type` 是职务文字,如「主教练」。`scheme` 是 `dongqiudi:///coach/{person_id}`。人员资料仍用同一个 8 位 id。
`seasons` 的一项:
| 字段 | 含义 |
|---|---|
| name | 赛季名,如 `2026` |
| current | 是否当前赛季 |
| id | 当前赛季样本是 `0`,不是资料库里的 season_id |
| url | 该季阵容地址,查询参数里有 `season` 和 `current` |
| sort | 排序 |
| start_date / end_date | 样本里是空字符串 |
| sport_type | 样本里是空字符串 |
篮球阵容
篮球队伍的 `member_v2` 经常是空对象。阵容改走:
`GET https://sport-data.dongqiudi.com/soccer/data/team/person/technic/{短id}`
地址里虽然有 `soccer`,篮球队伍用短 id 请求这份才有人。
| 字段 | 含义 |
|---|---|
| coach | 教练列表 |
| player | 球员列表 |
| tab | 球员表的列名。样本为出场/首发、时间、得分、篮板、助攻、投篮、三分、罚球、前板、后板、抢断、失误、盖帽、犯规 |
教练行:
| 字段 | 含义 |
|---|---|
| id | 短 id |
| name | 姓名 |
| place | 职务,如「主教练」 |
| age | 年龄,数字 |
| photo | 头像 |
| scheme | `dongqiudi:///player/{8位id}`。采集人员资料时用 scheme 里的 8 位 id |
| player_id | 样本里教练这项是 `0`,不能拿它当人员 id |
| salary、country、height、weight | 样本里教练多为空或 `0` |
球员行:
| 字段 | 含义 |
|---|---|
| player_id | 短 id |
| player_name | 姓名 |
| scheme | 8 位 id 在这里 |
| number | 球衣号 |
| place | 位置,如「前锋」 |
| age | 年龄 |
| height | 身高,厘米 |
| weight | 体重,公斤 |
| photo | 头像 |
| injury | 是否伤病。`0` 为否 |
| salary | 薪水。样本有空字符串 |
| season_id | 这份技术统计所属赛季 |
| team_id | 短的队伍 id |
| technic | 与 `tab` 一一对应的字符串数组 |
人员资料
`GET https://www.dongqiudi.com/sport-data/soccer/biz/dqd/v1/person/sample/{person_id}?app=dqd&lang=zh-cn`
足球和篮球都走这个地址,`person_id` 用 8 位 id。
| 字段 | 含义 |
|---|---|
| person_id | 8 位人员 id |
| person_name | 中文名 |
| person_en_name | 英文名 |
| person_logo | 头像 |
| nickname | 绰号 |
| status | 样本见过 `active` |
| nationality | 国籍文字 |
| nationality_logo | 国旗 |
| other_nationality / other_nationality_logo | 第二国籍。没有时为空 |
| date_of_birth | 生日,`YYYY-MM-DD` |
| age | 年龄,带「岁」 |
| height | 身高厘米。篮球样本是 `"203"`,足球样本是 `"185"` |
| weight | 体重公斤 |
| foot | 惯用脚,如「右脚」。篮球样本可能为空 |
| type | 样本球员为 `player` |
| position | 位置代码,如 `attacker`。篮球样本可能为空,位置看 `team_info.role` |
| info | 简介。样本见过空字符串 |
| market_value | 身价展示数。足球样本 `"2.5"`,同一份响应的 `crosswise` 写的是「身价2.5万欧」,所以这里的单位是万欧元,不是队伍资料里的欧元整数 |
| weekly_salary | 周薪 |
| contract | 合同 |
| color | 颜色 |
| sport_type | `soccer` 或 `basketball` |
| team_info.team_id | 当前队伍的 8 位 id |
| team_info.team_name | 当前队伍名 |
| team_info.team_logo | 队徽 |
| team_info.shirtnumber | 球衣号 |
| team_info.role | 位置文字,如「前锋」 |
| team_info.color | 队色 |
| ability_url | 能力值页。查询参数里的 id 是短 id |
| info_url | 资料页,用 8 位 id |
| aid_info_url / coach_player_url | 另两份资料页地址 |
| tabs | 页签。样本有动态、数据、比赛、能力值、资料。`url` 是对应 H5 |
| description | 纵向说明。样本见过空字符串 |
| crosswise_description | 横向两行展示文案,第二行含身高、体重和身价 |
| lengthways_description | 竖向展示,如年龄、队伍和号码、位置和惯用脚 |
| crosswise | 横向展示的结构数据 |
| pk_btn.scheme | 对比按钮,用短 id,如 `dongqiudi:///data_pk/player/102198` |
人员资料里的当前队伍,和阵容接口把这个人列进哪支队伍,可能不是同一支。库里两份原文都保留。列表上的「队伍」用来自人员资料的 `team_info`。