使用Python抓取欧洲足球联赛数据

admin 2024-02-10 阅读:68 评论:0
  摘要: 本文介绍了Web Scraping的基本概念的相关的Python库,并详细讲解了如果从腾讯体育抓取欧洲联赛的详细数据的过程和代码。为下一步的大数据分析的做好准备。背景Web Scraping   在大数据时代,一切都要用数...

  摘要: 本文介绍了Web Scraping的基本概念的相关的Python库,并详细讲解了如果从腾讯体育抓取欧洲联赛的详细数据的过程和代码。为下一步的大数据分析的做好准备。背景Web Scraping

  在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤

  其中首先要做的就是获取数据,并提炼出有效地数据,为下一步的分析做好准备。

  数据的来源多种多样,以为我本身是足球爱好者,而世界杯就要来了,所以我就想提取欧洲联赛的数据来做一个分析。许多的网站都提供了详细的足球数据,例如:

  这些网站都提供了详细的足球数据,然而为了进一步的分析,我们希望数据以格式化的形式存储,那么如何把这些网站提供的网页数据转换成格式化的数据呢大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!?这就要用到Web scraping的技术了。简单地说,Web Scraping就是从网站抽取信息, 通常利用程序来模拟人浏览网页的过程,发送http请求,从http响应中获得结果。Web Scraping 注意事项

  在抓取数据之前,要注意以下几点:Python Web Scraping 相关的库

  Python提供了很便利的Web Scraping基础,有很多支持的库。这里列出一小部分

  当然也不一定要用Python或者不一定要自己写代码,推荐关注import.ioWeb Scraping 代码

  下面,我们就一步步地用Python,从腾讯体育来抓取欧洲联赛13/14赛季的数据。

  首先要安装Beautifulsoup

  我们先从球员的数据开始抓取。

  球员数据的Web请求是http://soccerdata.sports.qq.com/playerSearch.aspx?lega=epl&pn=2 ,返回的内容如下图所示:

  该web服务有两个参数,lega表示是哪一个联赛,pn表示的是分页的页数。

  首先我们先做一些初始化的准备工作

  urlopen,urlparse,bs4是我们将要使用的Python库。

  BASE_URL,PLAYER_LIST_QUERY,league,page_number_limit和player_fields是我们会用到的一些常量。

  下面是抓取球员数据的具体代码:

  我们来看看抓取球员数据的详细过程:

  首先我们定义了一个get_players方法,该方法会返回某一请求页面上所有球员的数据。为了得到所有的数据,我们通过一个for循环,因为要循环各个联赛,每个联赛又有多个分页,一般情况下是需要一个双重循环的:

  Python的list comprehension可以很方便的通过构造一个列表的方式来减少循环的层次。

  另外Python还有一个很方便的语法来合并连个列表: list = list1 + list2

  好我们再看看如何使用BeautifulSoup来抓取网页中我们需要的内容。

  首先调用urlopen读取对应url的内容,通常是一个html,用该html构造一个beautifulsoup对象。

  beautifulsoup对象支持很多查找功能,也支持类似css的selector。通常如果有一个DOM对象是<xx class='cc'>,我们使用以下方式来查找:

  另外一种常见的方式就是通过CSS的selector方式,在上述代码中,我们选择class=searchResult元素里面,所有的tr元素,过滤掉th也就是表头元素。

  对于每一行记录tr,生成一条球员记录,并存放在一个列表中。所以我们就循环tr的内容tr.contents,获得对应的field内容。

  对于每一个tr的content,我们先检查其类型是不是一个Tag,对于Tag类型有几种情况,一种是包含img的情况,我们需要取出球员的头像图片的网址。

  另一种是包含了一个链接,指向其他数据内容

  所以在代码中要分别处理这些不同的情况。

  对于一个Tag对象,Tag.x可以获得他的子对象,Tag['x']可以获得Tag的attribute的值。

  所以用item.img['src']可以获得item的子元素img的src属性。

  对已包含链接的情况,我们通过urlparse来获取查询url中的参数。这里我们利用了dict comprehension的把查询参数放入一个dict中,然后添加到列表中大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。

  对于其它情况,我们使用Python 的and or表达式以确保当Tag的内容为空时,我们写入‘na’,该表达式类似C/C++或Java中的三元操作符 X ? A : B

  然后有一段代码判断当前记录的长度是否大于10,不大于10则用空值填充,目的是避免一些不一致的地方。

  最后,我们把query中的一些相关的参数如球员的id,球队的id,所在的联赛代码等加入到列表。

  最后我们把本页面所有球员的列表放入一个列表返回。

  好了,现在我们拥有了一个包含所有球员的信息的列表,我们需要把它存下来,以进一步的处理,分析。通常,csv格式是一个常见的选择大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。

  这里需要注意的就是关于encode的问题。因为我们使用的时utf-8的编码方式,在csv的文件头,需要写入xEFxBBxBF,详见

  好了现在大功告成,抓取的csv如下图:

  因为之前我们还抓取了球员本赛季的比赛详情,所以我们可以进一步的抓取所有球员每一场比赛的记录

  抓取的代码如下

  抓取的过程和之前类似。

下一步做什么

  现在我们拥有了详细的欧洲联赛的数据,那么下一步要怎么做呢,我推荐大家把数据导入BI工具来做进一步的分析。有两个比较好的选择:

  Tableau在数据可视化领域可谓无出其右,Tableau Public完全免费,用数据可视化来驱动数据的探索和分析,拥有非常好的用户体验

  Splunk提供一个大数据的平台,主要面向机器数据。支持每天免费导入500M的数据,如果是个人学习,应该足够了。

  当然你也可以用Excel。 另外大家如果有什么好的免费的数据分析的平台,欢迎交流。

  来源:https://my.oschina.net/taogang/blog/271060

使用Python抓取欧洲足球联赛数据

使用Python抓取欧洲足球联赛数据

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

发表评论
热门文章
  • 牛视网在线免费网络电视直播平台 (chaojidianshi.net)

    牛视网在线免费网络电视直播平台 (chaojidianshi.net)
      2020.04直播源已更新。蓝光   ……原答案…………   当然是用simpleTV和PotPlayer了!   高清、免费、频道多、无广告。   手机、电视端:推荐一款看电视直播软件?   安装好后直接打开直接可以看,频道已经内置好了(也可自行添加)。界面有两个:频道设置和播放器。频道设置播放器   首先安装PotPlayer。PotPlayer界面   然后,把定制源拖到列表中就行了。把定制源拖到列表中就行了   最后...
  • 美国哥斯达黎加时间是几点钟

    美国哥斯达黎加时间是几点钟
      哥斯达黎加是一个美丽的国家,位于中美洲地区。对于很多人来说,去哥斯达黎加旅游是一件非常愉快的事情,但是对于一些商务人士或者留学生来说,了解哥斯达黎加的时间是非常重要的大佬们都在玩{ 精选官网网址: www.vip333.Co }值得信任的品牌平台!。那么哥斯达黎加时间是几点钟呢?   哥斯达黎加位于中美洲地区,时区为UTC-6,也就是比北京时间慢14个小时。与美国东部时间相同,但比太平洋时间早三小时。所以如果你在哥斯达黎加,当你看到北京时间早上6点,哥斯达黎加的时间...
  • 足彩道路总是受阻?首先得学会看盘口和水位

    足彩道路总是受阻?首先得学会看盘口和水位
      前言   相信再次刷到我的老粉都知道我的名字,老陈,之前被同行举报很多次了,这次又回来了,先介绍下自己,本人姓陈,经营着自己的一家体彩店。足彩分析是个不断学习的过程,没有谁有必杀技,也没有谁能一直赢,关键是心态,虽然我不是高手 但是我感觉在足彩这方面 我应该比大部分人都有资格说几句,之前在店里跟单的几个朋友,现在也成了我很要好的朋友,他们一致的认为,我的理论不敢说是什么必杀技一类的秘籍,但是能让人走不少弯路。大家对我有如此高的评价,我也是深感欣慰。因为我写文章的动机...
  • 葡萄牙球队介绍

    葡萄牙球队介绍
      球队简介:   葡萄牙队于1914年成立,由葡萄牙足总管理,葡萄牙队是唯一获誉“欧洲的巴西队”美称的球队,但在世界大赛上鲜有优秀的表现,世界杯上最好成绩是在1966年英格兰世界杯上的第三名。   一直以来,葡萄牙都称不上是一支强队,迄今只曾五次杀入世界杯决赛周,最早的一次是在1966年,当届取得季军。其中有“黑豹”之称的尤西比奥在打进9球,成为1966年世界杯最佳射手。随后要等到20年后,在1986年葡萄牙才再次...
  • 葡萄牙vs卢森堡在线直播,葡萄牙vs卢森堡

    葡萄牙vs卢森堡在线直播,葡萄牙vs卢森堡
    葡萄牙vs卢森堡在线直播:2021年欧洲杯预选赛比赛时间和地点这场比赛将于2021年10月9日在葡萄牙的利斯本进行。比赛时间为当地时间晚上7点45分。球队情况葡萄牙是世界足坛的强队之一,他们在2016年欧洲杯上夺得冠军,并在2019年获得了欧洲国家联赛的冠军。卢森堡则是一支较为弱小的球队,但他们仍然有一些不错的球员。葡萄牙已经确认了他们将参加2021年欧洲杯,而卢森堡则已经被淘汰。在线直播信息如果您是一名球迷,并且想要观看葡萄牙vs卢森堡的比赛,那么您可以选择在线直播。不同的...