世界杯来了!看我大Python分析一波!四强会是哪是个国家!

毫无疑问,谁将捧起世界杯是我们最关心的问题,小编作为一名“资深”球迷自然得发挥下自己的专长,用python模拟2018世界杯,先给大家解解渴。

前言

世界杯即将开打,一切都是未知数,不过整个赛程已定,我们可以完全按照赛程模拟全部64场比赛比分10000次,得出A~H组各自的出线形势、每支队伍进四强的概率、以及最终的夺冠概率。

数据采集

寻找有利资源和所要采集的网站,准备开始数据采集。这次采集以球探网为例:

首先找到32个国家各自的网站链接;然后分别进入32个链接,采集各自的比赛记录数据;

解析网站,构造大体思路,创建网络爬虫实施采集。由于该网站是静态网站,所以就很容易的对网站的采集,在采集的过程中,我们首先找到,每个国家球队的链接,建立国家球队链接和国家球队名,然后进行采集给定国家队页面的所有历史比赛的数据。

在寻找国家链接的时候请注意链接的准确性,球探网每一个球队都有一个独立的链接,比如巴西的id是778,链接地址就为:http://zq.win007.com/cn/team/CTeamSche/778.html,如果对链接的不放心,可以先将链接复制到浏览器中,看是否能够找到网页。

以下为数据采集详细代码:

 1 from __future__ importprint_function, division
 2
 3 from selenium import webdriver
 4
 5 import pandas as pd
 6
 7 class Spider(object):
 8
 9 def __init__(self):
 10
 11 self.driver = webdriver.Chrome()
 12
 13 self.driver.implicitly_wait(30)
 14
 15 self.verificationErrors = []
 16
 17 self.accept_next_alert = True
 18
 19 def get_all_team_data(self):
 20
 21 # 先通过世界杯主页获取所有32只队的ID(构成球队URL)Python学习交流群:125240963,群内每天分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎各位小伙伴入群学习交流

 22
 23 self.get_team_ids()
 24
 25 # 循环采集每一支队的比赛数据
 26
 27 data = []
 28
 29 for i, [team_id, team_name] inenumerate(self.team_list):
 30
 31 print(i, team_id, team_name)
 32
 33 df =self.get_team_data(team_id, team_name)
 34
 35 data.append(df)
 36
 37 output = pd.concat(data)
 38
 39 output.reset_index(drop=True,inplace=True)
 40
 41 output.to_csv(‘data_2018WorldCup.csv‘,index=False, encoding=‘utf-8‘)
 42
 43 self.driver.close()
 44
 45 def get_team_ids(self):
 46
 47 main_url =‘http://zq.win007.com/cn/CupMatch/75.html‘
 48
 49 self.driver.get(main_url)
 50
 51 teams=self.driver.find_elements_by_xpath("//td[@style=‘ padding: 0px; border: 0px; font-style: italic; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; word-break: break-word; color: rgb(64, 128, 128);">#fff;text-align:left;‘]")
 52
 53 data = []
 54
 55 for team in teams:
 56
 57 team_id=
 58
 59 int(team.find_element_by_xpath(".//a").get_attribute(‘href‘).split(‘/‘)[-1].split(‘.‘)[0])
 60
 61 team_name =team.find_element_by_xpath(".//a").text
 62
 63 print(team_id, team_name)
 64
 65 data.append([team_id,team_name])
 66
 67 self.team_list = data
 68
 69 #self.team_list =pd.DataFrame(data, columns=[‘team_name‘, ‘team_id‘])
 70
 71 #self.team_list.to_excel(‘国家队ID.xlsx‘, index=False)
 72
 73 def get_team_data(self, team_id,team_name):
 74
 75 """获取一个国家队的比赛数据。TODO:没有实现翻页Python学习交流群:125240963,群内每天分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎各位小伙伴入群学习交流"""
 76
 77 url =‘http://zq.win007.com/cn/team/CTeamSche/%d.html‘%team_id
 78
 79 self.driver.get(url)
 80
 81 table=self.driver.find_element_by_xpath("//div[@id=‘Tech_schedule‘[email protected]=‘data‘]")
 82
 83 matches =table.find_elements_by_xpath(".//tr")
 84
 85 print(len(matches))
 86
 87 # 抓取比赛数据,并保存成DataFrame
 88
 89 data = []
 90
 91 for i, match inenumerate(matches):
 92
 93 if i == 0:
 94
 95 headers =match.find_elements_by_xpath(".//th")
 96
 97 h1, h2, h3, h4, h5 =headers[0].text, headers[1].text, headers[2].text, headers[3].text,headers[4].text
 98
 99 print(h1, h2, h3, h4, h5)
100
101 continue
102
103 try:
104
105 info =match.find_elements_by_xpath(".//td")
106
107 cup =str(info[0].text.encode(‘utf-8‘))
108
109 match_time =str(info[1].text.encode(‘utf-8‘))
110
111 home_team =str(info[2].text.encode(‘utf-8‘))
112
113 fts = info[3].text
114
115 #print(‘-‘, cup, ‘-‘)
116
117 fs_A,fs_B=int(fts.split(‘-‘)[0]),int(fts.split(‘-‘)[1])
118
119 away_team = str(info[4].text.encode(‘utf-8‘))
120
121 print(cup, match_time,home_team, away_team, fs_A, fs_B)
122
123 data.append([cup,match_time, home_team, away_team, fs_A, fs_B, team_name])
124
125 except:
126
127 break
128
129 df = pd.DataFrame(data, columns=[‘赛事‘, ‘时间‘, ‘主队‘, ‘客队‘, ‘主队进球‘, ‘客队进球‘, ‘国家队名‘])
130
131 return df
132
133 if __name__ == "__main__":
134
135 spider = Spider()
136
137 # 第一步:抓2018世界杯球队的ID。第二部:循环抓取每一支队的比赛数据。
138
139 spider.get_all_team_data()

进群:125240963  即可获取源码!

原文地址:https://www.cnblogs.com/PY147/p/9188856.html

时间: 2024-08-22 04:19:51

世界杯来了!看我大Python分析一波!四强会是哪是个国家!的相关文章

利用Python分析“女神大会”,分析码农最喜欢的top10女星!

前言 懂球帝上的"女神大会"专栏,作为一个大型"钢铁直男"聚集地,"懂球帝"上对各位女神的评分,对广大"钢铁直男"群体也具有一定代表性.这么好的地方,咱们必须得用Python分析一波了呀. 基本环境配置 版本:Python3 系统:Windows 相关模块:requests.bs4.pandas 用pip安装即可. 数据来源 目前女神大会更新至了第 90 期,总共出场了 90 位女神,界面如下:我们通过 fiddler 获取该

如何从0开始学习大数据挖掘分析?

最近有很多人咨询,想学习大数据,但不知道怎么入手,从哪里开始学习,需要学习哪些东西?对于一个初学者,学习大数据挖掘分析的思路逻辑是什么?本文就梳理了如何从0开始学习大数据挖掘分析,学习的步骤思路,可以给大家一个学习的建议. 很多人认为数据挖掘需要掌握复杂高深的算法,需要掌握技术开发,才能把数据挖掘分析做好,实际上并非这样.如果钻入复杂算法和技术开发,只能让你走火入魔,越走越费劲,并且效果不大.在公司实际工作中,最好的大数据挖掘工程师一定是最熟悉和理解业务的人.对于大数据挖掘的学习心得,作者认为学

Python分析盘点2019全球流行音乐:是哪些歌曲榜单占领了我们?

写在前面:圣诞刚过,弥留者节日气息的大家是否还在继续学习呐~在匆忙之际也不忘给自己找几首好听的歌曲放松一下,缠绕着音乐一起来看看关于2019年流行音乐趋势是如何用Python分析的吧! 昨天下午没事儿,随便听了下音乐,结果搜到了一份数据比较好玩,所以拿了来做个数据分享案例. 这份数据是由国外比较火的音乐软件spotify提供的,很有代表意义. 不过涉及到的指标都比较专业,我不是太懂,只能根据自己的理解去做分析,有懂音乐的朋友可以提出专业的看法. 这次的数据分析工具是Python,当然如果你Pyt

信息与网络安全需要大数据安全分析

毫无疑问,我们已经进入了大数据(Big Data)时代.人类的生产生活每天都在产生大量的数据,并且产生的速度越来越快.根据IDC和EMC的联合调查,到2020年全球数据总量将达到40ZB.2013年,Gartner将大数据列为未来信息架构发展的10大趋势之首.Gartner预测将在2011年到2016年间累计创造2320亿美元的产值. 大数据早就存在,只是一直没有足够的基础实施和技术来对这些数据进行有价值的挖据.随着存储成本的不断下降.以及分析技术的不断进步,尤其是云计算的出现,不少公司已经发现

为什么需要大数据安全分析?

毫无疑问,我们已经进入了大数据(BigData)时代.人类的生产生活每天都在产生大量的数据,并且产生的速度越来越快.根据IDC和EMC的联 合调查,到2020年全球数据总量将达到40ZB.2013年,Gartner将大数据列为未来信息架构发展的10大趋势之首.Gartner预测将在 2011年到2016年间累计创造2320亿美元的产值. 大数据早就存在,只是一直没有足够的基础实施和技术来对这些数据进行有价值的挖据.随着存储成本的不断下降.以及分析技术的不断进步,尤其是云计算 的出现,不少公司已经

深入大数据安全分析(1):为什么需要大数据安全分析?

[前言]经过我们的不懈努力,2014年底我们终于发布了大数据安全分析平台(Big Data Security Analytics Platform,简称BDSAP).那么,到底什么是大数据安全分析?为什么需要大数据安全分析?何时需要?谁需要?应用场景是什么?解决什么问题?有什么价值和意义?大数据安全分析将如何重塑网络安全技术领域?在目前如何建设大数据安全分析平台?从本期开始,我将开启一个新的系列文章--深入大数据安全分析.如果说我在2011年底开始持续到2012年中的<当网络安全遇上大数据分析>

常用的十大Python开发工具

据权威机构统计,Python人才需求量每日高达5000+,但目前市场上会 Python 的程序员少之又少, 竞争小,很容易快速高薪就业.可能你并不太了解常用的十大Python开发工具都有哪些,现在告诉你. 1.Micro Python Micro Python基于ANSI C,语法跟Pyton 3基本一致,拥有自家的解析器.编译器.虚拟机和类库等.目前支持基于32-bit的ARM处理器,比如说STM32F405. 借助它,用户完全可以通过Python脚本语言实现硬件底层的访问和控制,如控制LED

瀚思推出国内首个企业级大数据安全分析平台

大数据时代的到来,让不少行业已经发现了自身数据的巨大内在价值:它们能揭示传统手段所看不到的新变化趋势,如深入理解消费者行为.广 告效果.业务趋势等,而在企业IT市场却鲜有标杆案例.尤其在信息安全领域,随着企业安全架构日趋复杂,安全设备种类繁多,实时生成的安全数据也已成几何 级数增长,这部分数据的内在价值如何挖掘?同时,更具隐蔽性的网络和黑客攻击造成的数据泄露,给企业乃至国家机关或政府都带来了巨大威胁.仅在2014 年,全球就发生了多起信息数据遭攻击与泄露事件,如JPMorgan 7600万用户受

廖大python实战项目第五天

PS: 决定还是坚持写博客记录一下比较好. 今天的实战内容是编写web框架,如果之前的知识不熟悉的话确实看不大懂.在这里奉上自己的理解以及帮助理解的相关资料和文档. Web框架 首先我们要知道web框架是什么东西,它到底要怎么实现.这一点廖大在web开发的WSGI接口.使用web框架这两篇文章里已经说过了.摘要一些略作说明: def application(environ, start_response): start_response('200 OK', [('Content-Type', '