【2020东京奥运会】奥运榜单以及各国参赛运动员数据可视化~

27 篇文章 20 订阅
订阅专栏

项目

本文中的代码是基于notebook写的,可以访问https://www.heywhale.com/mw/project/61015e73aca24600179ec778获取完整notebook.

奖牌榜数据

通过咪咕视频的接口获取奖牌榜单的数据,貌似也没做什么反爬虫,直接就可以获取到数据:

import requests 

rank_url = 'https://app-sc.miguvideo.com/vms-livedata/olympic-medal/total-table/15/110000004609'
data = requests.get(rank_url).json()

数据处理,将json数据转化为dataframe:

df = pd.DataFrame()

for item in data['body']['allMedalData']:
    df = df.append([[
        item['rank'],
        item['countryName'],
        item['goldMedalNum'],
        item['silverMedalNum'],
        item['bronzeMedalNum'],
        item['totalMedalNum']]])
df.columns = ['排名', '国家', '金牌', '银牌', '铜牌', '奖牌']
df = df.reset_index(drop=True)

使用plotly展示榜单前30个国家:

import plotly.graph_objects as go
from plotly.colors import n_colors
import numpy as np
np.random.seed(1)

colors = n_colors('rgb(225,255,255)', 'rgb(255,192,203)', 10, colortype='rgb')
fig = go.Figure(
    data=[go.Table(
        columnwidth=[20, 80, 80, 80, 80],
        header=dict(values=["<span style='font-size:16px;color:#fff;font-weight:bold';>{}</span><br>".format(c) for c in df.columns],
                    line_color='darkslategray',
                    fill_color='rgb(255,0,0)',
                    align=['center'],
                    # font=dict(color='white', size=13),
                    height=40),
        cells=dict(values=df.head(30).T,
                   line_color='darkslategray',
                   fill=dict(color=[colors, 'white']),
                   align=['center'],
                   font_size=13,
                   height=30))
          ])
fig.update_layout(
    height=1200,
    title_text="<span style='font-size:20px;color:#0000FF;font-weight:bolder';>2020东京奥运会奖牌榜</span><br><span style='font-size:12px;color:#C0C0C0';>更新时间:{}</span>".format(update_time),
)
fig.show()

运动员数据

  • 2020年东京奥运会全部参赛人员名单数据来自奥委会官网( https://olympics.com/tokyo-2020/olympic-games/zh/results/all-sports/athletes.htm);
  • 整体数据来看,总共206个国家或地区的代表团共11309名选手参赛,比2016年里约奥运会的11180人多出129人,为史上参赛人数最多的一届奥运会;

获取国家简称和项目的中文名称对应表:

# 获取国家简称对应的中文名称
noc = 'https://olympics.com/tokyo-2020/olympic-games/zh/results/all-sports/nocs-list.htm'

r = requests.get(noc)
para = r'</li>.*?country="(?P<简称>.*?)">.*?<div class="mx-auto font-weight-bold">(?P<中文名称>.*?)</div>'

patterns = re.compile(para)

noc_dict = {}
for k, v in patterns.findall(r.text):
    noc_dict[k] = v



# 获取项目简称对应的中文代码
sports = 'https://olympics.com/tokyo-2020/zh/sports/'
r = requests.get(sports)
para = r'<div class="tk-disciplines__picto tk-picto-(.*?)"></div>\s+.*?title">\s+(.*?)\s+'

patterns = re.compile(para)
sports_dict = {}
for k, v in patterns.findall(r.text):
    sports_dict[k.upper()] = v

获取运动员数据

athlete_url = 'https://olympics.com/tokyo-2020/olympic-games/zh/results/all-sports/zzje001a.json'
data = requests.get(athlete_url).json()

athletes_df = pd.DataFrame(columns=['姓名', '国家', '项目'])
for item in data['data']:
    athletes_df = athletes_df.append(
        [{'姓名': item['name'], '国家':noc_dict[item['noc']], '项目':sports_dict[item['dis']]}])

athletes_df = athletes_df.reset_index(drop=True)

按国家维度聚合统计:

df_t = athletes_df.groupby(['国家', '项目'])['姓名'].count().reset_index()
df_t.columns = ['国家', '项目', '人数']

data = []
country = []
for idx, row in df_t.iterrows():
    if row['国家'] in country:
        data[-1]['children'].append(dict(name=row['项目'], value=row['人数']))
    else:
        data.append(dict(name=row['国家'], children=[dict(name=row['项目'], value=row['人数'])]))
    country.append(row['国家'])


tree = TreeMap(    
    init_opts=opts.InitOpts(
        theme='light',
        width='1000px',
        height='600px',
        # bg_color='rgb(0,0,0)'
        ))
tree.add(
    "参赛人数", 
    data,
    leaf_depth=1,
    label_opts=opts.LabelOpts(position="inside", formatter='{b}:{c}名'),
    levels=[
            opts.TreeMapLevelsOpts(
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color="#555", border_width=4, gap_width=4
                )
            ),
            opts.TreeMapLevelsOpts(
                color_saturation=[0.3, 0.6],
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color_saturation=0.7, gap_width=2, border_width=2
                ),
            ),
            opts.TreeMapLevelsOpts(
                color_saturation=[0.3, 0.5],
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color_saturation=0.6, gap_width=1
                ),
            ),
            # opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.5]),
        ],
    )
tree.set_global_opts(
    title_opts=opts.TitleOpts(title="2020东京奥运会参赛人数统计(国家/地区)", pos_left='center', title_textstyle_opts=opts.TextStyleOpts(color='#00BFFF', font_size=20)),
    legend_opts=opts.LegendOpts(is_show=False)
    )

tree.render_notebook()

按运动项目聚合统计: 

df_t = athletes_df.groupby(['项目', '国家'])['姓名'].count().reset_index()
df_t.columns = ['项目', '国家', '人数']

data = []
event = []
for idx, row in df_t.iterrows():
    if row['项目'] in event:
        data[-1]['children'].append(dict(name=row['国家'], value=row['人数']))
    else:
        data.append(dict(name=row['项目'], children=[dict(name=row['国家'], value=row['人数'])]))
    event.append(row['项目'])


tree = TreeMap(    
    init_opts=opts.InitOpts(
        theme='light',
        width='1000px',
        height='600px',
        # bg_color='rgb(0,0,0)'
        ))
tree.add(
    "参赛人数", 
    data,
    leaf_depth=1,
    label_opts=opts.LabelOpts(position="inside", formatter='{b}:{c}名'),
    levels=[
            opts.TreeMapLevelsOpts(
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color="#555", border_width=4, gap_width=4
                )
            ),
            opts.TreeMapLevelsOpts(
                color_saturation=[0.3, 0.6],
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color_saturation=0.7, gap_width=2, border_width=2
                ),
            ),
            opts.TreeMapLevelsOpts(
                color_saturation=[0.3, 0.5],
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color_saturation=0.6, gap_width=1
                ),
            ),
            # opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.5]),
        ],
    )
tree.set_global_opts(
    title_opts=opts.TitleOpts(
        title="2020东京奥运会参赛人数统计(项目)", 
        pos_left='center', 
        title_textstyle_opts=opts.TextStyleOpts(color='#00BFFF', font_size=20)
        ),
    legend_opts=opts.LegendOpts(
        is_show=False
        )
    )

tree.render_notebook()

 主要国家各项目参数人数对比

pie = Pie(
    init_opts=opts.InitOpts(
        theme='light',
        width='1000px',
        height='800px',
    )
)
titles = [dict(
            text='2020东京奥运会各国主要项目参赛运动员比例',
            left='center',
            top='0%',
            textStyle=dict(
                color='#000',
                fontSize=20)
                )
                ]
for i, c in enumerate(country_list):
    d = df_t[df_t['国家'] == c].reset_index()
    data_pair = []
    else_num = 0
    for idx, row in d.iterrows():
        if idx < 5:
            data_pair.append(
                opts.PieItem(
                    name=row['项目'],
                    value=row['人数'],
                    label_opts=opts.LabelOpts(
                        is_show=True, formatter='{b}:{d}%')
                )
            )
        else:
            else_num += row['人数']
    data_pair.append(
        opts.PieItem(
            name='其他',
            value=else_num,
            label_opts=opts.LabelOpts(
                is_show=True, formatter='{b}:{d}%')
        )
    )

    pos_x = '{}%'.format(int(i / 4) * 33 + 16)
    pos_y = '{}%'.format(i % 4 * 24 + 15)

    titles.append(
        dict(
            text=c+' ',
            left=pos_x,
            top=pos_y,
            textAlign='center',
            textVerticalAlign='middle',
            textStyle=dict(
                color='#00BFFF',
                fontSize=12)
                )
    )

    pie.add(
        c,
        data_pair,
        center=[pos_x, pos_y],
        radius=['8%', '12%']
    )


pie.set_global_opts(
    legend_opts=opts.LegendOpts(is_show=False),
    title_opts=titles
)
pie.render_notebook()

python: 使用矩阵树状图展示2020东京奥运会各国参赛人员统计
走向CTO的路上...
01-08 904
矩阵树状图是一种有用的数据可视化技术,可以用于展示多个类别或维度之间的关系和相似性。然而,实际应用中,我们需要根据具体的数据和需求进行调整和修改,以获得最佳的可视化效果。此外,一些专门的可视化工具和库也可能提供更高级的功能和定制化选项来创建矩阵树状图,以满足不同的需求。矩阵树状图(Matrix Tree Plot)是一种用于可视化数据的图表类型,它将数据以矩阵形式呈现,并使用树状结构来显示数据之间的关系。矩阵树状图的原理是将数据以矩阵的形式表示,其中行和列代表数据的不同维度或类别。库来创建矩阵树状图。
2020东京奥运会数据集echarts可视化分析
YacFighting的博客
11-29 2431
1.数据集的下载 2021 Olympics in Tokyo | Kaggle 部分数据集的内容如下 2.金牌榜前10名 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>金牌榜前十</title> <script src="https://cdn.staticfile.org/echarts/4.3.0/echa
2020东京奥运会】 数据分析及可视化
热门推荐
向日葵的专属太阳
08-13 1万+
⭐️【2020东京奥运会】 数据分析及可视化 ⭐️写在前面数据获取数据预处理数据可视化各地区奖牌数量分布奖牌榜前十中国夺金项目分类中国奖牌实时数量合成看板总结 写在前面 8月8日,小日…子过得挺好的日本选手的国家 举办的东京奥运会已经结束了。在奥运期间,主办方种种 奇葩操作 直接把我看傻,最终它们也通过独特的“手段” 挤入了前三名,在这里首先谢谢他们刷新了我对奥运的认知。同时,借此机会看看我国今年奥运会的获奖情况,话不多说进入正文。 数据获取 奥运会相关数据来自以下两个接口。 https://app-
奥运会数据分析与可视化预测-数据挖掘机器学习与数据分析项目jupyter
06-08
2020东京奥运会数据分析与可视化程序,jupyter 参考kaggle上的历史数据进行建模预测,不管是多少年份的奥运会都可以作为参考 包含完整的数据集,可以方便快捷运行。 本次预测程序采用了近`120`年的奥运奖牌榜作为训练数据,以对应参赛国家/地区的GDP、人口等作为参照。实现了多个数据展示 可以用作于课程设计(数据分析作业),或者大作业。
Python——奥运会数据分析(1)
最新发布
龙皮皮的博客
05-17 860
1.使用tail函数,tail()函数默认取数据的最后5行,这里取数据的后3行# 2.得到的结果为。
python获取东京奥运会金牌排行榜及获奖人员并部署云函数每天邮件发送
A_zhiyuan的博客
07-26 1664
python获取东京奥运会金牌排行榜及获奖人员 前言 别人的00后,征战奥运会,我的00后,在家睡大觉。 作为编程爱好者,刚刚用 python 写了查询奥运会金牌排行榜,并通过云函数发送邮件,查看每天实时数据的小功能,为奥运会做些力所能及的事,助力奥运,中国加油! 排行榜代码 央视网官网数据 金牌排行榜:https://2020.cctv.com/medal_list/ 中国奖牌榜获得者:https://2020.cctv.com/medal_list/details/index.shtml?spm=0.
【31 Pandas+Pyecharts | 成都大运会奖牌数据分析可视化】
Python当打之年
08-18 999
成都大运会奖牌数据分析可视化
数据获取及可视化源码(Jupiter).zip
08-04
数据获取及可视化源码Jupiter版(东京奥运会奖牌榜为例),仅供学习
Python2020东京奥运会奖牌数据分析项目实训方案(两周)1
08-03
本实训项目是基于2020东京奥运会奖牌数据的分析,旨在提升学员对Python编程语言在数据分析领域的应用能力。通过实际操作,学员将掌握数据获取、清洗、处理、可视化以及报告撰写等核心技能。 1.1 项目背景 2020年...
基于Python的东京奥运会奖牌榜可视化设计源码
03-29
这是一个基于Python的东京奥运会奖牌榜可视化设计,使用Python语言开发,包含298个文件。主要文件类型包括224个PNG图片文件、62个Python源文件、3个TCL文件、1个gitignore文件、1个LICENSE文件、1个Markdown文档、1...
2022东京奥运会奖牌数据集
06-13
2022东京奥运会各国获得的奖牌数据集,包括金牌、银牌、铜牌
2020东京奥运会奖牌排行--数据可视化
weixin_44394124的博客
09-10 4762
爬取数据1 1、数据来源:https://2020.cctv.com/medal_list/index.shtml 数据为下面图片的表格数据 2、具体代码 2.1需要提前下载好的pip install 库名 from selenium import webdriver import lxml.html import csv 2.2获取网页完整代码 #自动打开chrome,获取代码 driver = webdriver.Chrome('D:\\数据分析\\chromedriver_win32\\chrom
【Python可视化】使用Pyecharts进行奥运会可视化分析~
AwesomeTang
04-29 5262
项目全部代码 & 数据集都可以访问我的KLab --【Pyecharts】奥运会数据集可视化分析~获取,点击Fork即可~ 受疫情影响,2020东京奥运会将延期至2021年举行; 虽然延期,但此次奥运会依旧会沿用「2020东京奥运会」这个名称; 这也将是奥运会历史上首次延期(1916年、1940年、1944年曾因一战,二战停办); 既然奥运会延期了,那我们就来回顾下整个...
使用Pyecharts进行奥运会可视化分析!
爬遍所有网站
04-30 1622
受疫情影响,2020东京奥运会将延期至2021年举行; 虽然延期,但此次奥运会依旧会沿用「2020东京奥运会」这个名称; 这也将是奥运会历史上首次延期(1916年、1940年、1944年曾因一战,二战停办); 既然奥运会延期了,那我们就来回顾下整个奥运会的历史吧:tada::tada:~ 本项目将会从以下角度来呈现奥运会历史: :trophy:各国累计奖牌数; :soccer:️各项运动...
数据爬虫及可视化——东京奥运会奖牌榜
hard_coding_wang
08-04 2622
东京奥运会奖牌榜爬虫通过手机浏览器实时查看奥运会奖牌信息将手机浏览器访问的地址复制,通过计算机浏览器访问打开谷歌浏览器的开发者工具,切换到network选项卡,刷新页面重新请求。拖动滚动条,找到具体获取本届奥运会的请求复制该请求,直接用浏览器访问使用在线json解析工具,简单解析数据爬取和解析数据爬取解析金牌榜信息提取金牌榜信息选择金牌榜前10国家和金牌数并封装数据绘制饼图 正值东京奥运会期间,除了为奥运健儿们加油,被他们“更高、更快,更强,更团结”的拼搏精神所折服外,作为一个热血青年,其实想更多地了解中国
资源 | Python可视化系列文章资源(源码+数据)
Python当打之年
12-02 6508
Python可视化系列文章资源(源码+数据)
爬虫+可视化 | 动态展示2020东京奥运会奖牌世界分布
Python当打之年
08-11 3773
文章目录前言1. 导入模块2. 数据爬取3. 地图展示3.1 2020东京奥运会奖牌数世界分布3.2 2020东京奥运会金牌世界分布3.3 2020东京奥运会金、银、铜世界分布推荐阅读 前言 大家好,我是 ????【Python当打之年】 2020东京奥运会已落下帷幕,中国军团共获得88枚奖牌,其中38枚金牌、32枚银牌、18枚铜牌,金牌榜和奖牌榜仅次于美国,排名第2。 本期主要利用pyecharts给大家展示奥运会金牌、银牌、铜牌以及奖牌总数的世界地图分布,希望对你有所帮助。 先看看效果: 1. 导
【毕业设计】奥运会数据分析与可视化 - python 大数据
caxiou的博客
11-14 3141
🔥 Hi,大家好,这里是丹成学长的毕设系列文章!🔥 对毕设有任何疑问都可以问学长哦!这两年开始,各个学校对毕设的要求越来越高,难度也越来越大… 毕业设计耗费时间,耗费精力,甚至有些题目即使是专业的老师或者硕士生也需要很长时间,所以一旦发现问题,一定要提前准备,避免到后面措手不及,草草了事。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的新项目是🚩奥运会数据集分析🥇学长这里给一个题目综合评分(每项满分5分)难度系数:4分工作量:4分创新点:3分🧿。
2020东京奥运会土地利用
04-01
2020东京奥运会的土地利用主要集中在以下几个方面: 1. 建设新的体育场馆和设施:包括新国立竞技场、奥林匹克村、奥运村、奥运主媒体中心、新国际广播中心等,占用了大量土地。 2. 改造现有的场馆和设施:东京都内的现有场馆和设施进行了改造和升级,如东京体育馆、有明竞技场、日本武道馆等。 3. 建设新的交通基础设施:包括新建和扩建地铁、铁路、高速公路等交通基础设施,以满足人员和物资的运输需求。 4. 临时设施建设:为了应对奥运会期间的临时需求,建设了一些临时设施,如观众席、保安检查站、临时停车场等。 总体来说,2020东京奥运会的土地利用主要是在原有基础上进行改造和升级,同时也有一定的新建设。在土地利用方面,东京奥运会的目标是最大限度地利用现有的场馆和设施,尽可能减少对环境的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【pyecharts | 颜色配置】关于pyecharts中自定义颜色问题详解 29710
  • 【2020东京奥运会】奥运榜单以及各国参赛运动员数据可视化~ 13174
  • 【第七次全国人口普查 | Pyecharts】数据可视化~ 12944
  • 【Pyecharts50例】自定义饼图标签/显示百分比 8802
  • 【数据分析|面试】如何介绍你的项目经历 7751

分类专栏

  • Pandas必知必会 付费 5篇
  • Pyecharts50例 付费 50篇
  • Pyecharts Gallery 付费 14篇
  • Matplotlib&Seaborn 付费 9篇
  • SQL必知必会 5篇
  • Pyecharts问题解决 3篇
  • 数据可视化 27篇
  • 数据分析技能 6篇
  • GIS 1篇
  • 机器学习 2篇
  • Python小项目 14篇
  • 数据分析面试 1篇
  • TensorFlow 1篇

最新评论

  • 【SQL40例】吐血整理,数据分析师入门SQL训练题40例!!

    Liberty812: 升序和降序那两个是不是写差东西呀

  • 【Python可视化】使用Pyecharts进行奥运会可视化分析~

    ζ珊大宝~: 请问最后一个的多个环形图的代码for _, row in t_data.iterrows(): if idx % 2 == 0: x = 30 y = int(idx / 2) * 22 + 18 else: x = 70 y = int(idx / 2) * 22 + 18 idx += 1 pos_x = str(x) + '%' pos_y = str(y) + '%' pie.add( row['Sport'], [[row['region'], row['Event_x']], ['其他国家', row['Event_y'] - row['Event_x']]], center=[pos_x, pos_y], radius=[70, 100], label_opts=new_label_opts())什么意思哇

  • 嗨,介绍一款地理数据可视化神器——keplergl

    GouDX: 不出现地图是啥情况呀

  • 【pyecharts | 颜色配置】关于pyecharts中自定义颜色问题详解

    Penna_a: 请教下Gauge仪表盘颜色设置成渐变色应该怎么操作呢?

  • 【Pyecharts50例】GEO使用外国地图/使用美国地图

    Nemo-Wang: from pyecharts.datasets import register_url报错是为什么啊

大家在看

  • androidstudio安卓期末大作业(新闻阅读)

最新文章

  • 【SQL教程|01】SQL简介——什么是SQL
  • 【Pyecharts|GEO-Lines】全球航线图的绘制
  • 【Seaborn】组合图表:PairPlot和JointPlot
2022年11篇
2021年85篇
2020年19篇
2019年9篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AwesomeTang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网回到未来3迅雷下载一款霸气十足的茶起名字高姓男孩免费起名起名网大师免费起名字207国道第四套币停止流通寓意好的成语可起什么名字好听通奸是什么意思step7东方电影频道psp对战传说玉楼春演员表电子科技有限公司公司起名男孩起名李昊什么色狼网站vgaa静悄悄的革命读后感氢氧化铜的颜色随即起名武汉工贸职业学院宜兴大觉寺举起右手点名房价未来五年翻番起名字打分100分为一米阳光电视剧乳旋风侮辱丰满美丽的人妻精品店起名要大气的屋顶上的童年时光郑氏起什么名字好听淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化