如何爬取NBA赛事数据?

不知道有没有小伙伴最近在看 NBA 总决赛的呢? 小编我也是一位篮球迷,可是自从上了大学之后却很少碰球了,所谓沉迷代码之中无法自拔,但是一颗热爱篮球的心从未被磨灭过。小编时刻都有关注着总决赛的数据状况,但是身为一位程序员,总要时刻都能体现自己的高逼格吧,于是大手一挥,便写了一个程序爬取 NBA 比赛的赛事数据,以便可以外人眼中装逼出我热爱篮球的心,当然也是真的热爱!


成果展示:



方法学习:

   1如何将数据写入 excel :

      

    导入模块:


 import xlwt

    

    新建一个excel文件:

  

myfile = xlwt.Workbook()


     新建一个sheet

   

sheet = myfile.add_sheet("sheet1", cell_overwrite_ok=True)


在myfile文件中新建一个叫”sheet1”的新sheet,后面的cell_overwrite_ok

参数表示允许覆盖写入。即sheet1当中加入已经存在内容,会覆盖原来的内容写入。
  往sheet中写入内容

sheet.write(00"test")


    表示往第0行第0列写入“test”字符串

    关闭文件
myfile.save("filename.xls")
最后一定记得关闭文件完成写入过程

    2、Beautiful Soup + find_all() 的使用

    

find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件.这里有几个例子:


 
soup.find_all("title")
# [<title>The Dormouse's story</title>]

soup.find_all("p""title")
# [<p class="title"><b>The Dormouse's story</b></p>]

soup.find_all("a")
# [ <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

soup.find_all(id="link2")
# [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]

import re
soup.find(text=re.compile("sisters"))
# u'Once upon a time there were three little sisters; and their names were\n'
soup.find_all("a", class_="sister")
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]


一定要注意使用 find_all() 返回的是一个列表,具体请大家参考:Beautiful Soup 官方文档!


网页分析:


重点看的就是我画了箭头的地方,因为用的是 find_all() 所以要自己找到网页中的 class 或者其他的 tag 来进行判断抓取,只要理解了上面所说的方法,再结合代码进行参考,我相信你很快就能掌握新的抓取方法!我们要爬取的目标比较多,所以代码也就写的比较长!

    



获取网页请求数据:

这个已经是一个老套路了,相信一路坚持看教程的人都已经学会了的吧!


保存到 excel 中:


详细的操作我已经在上面的「方法学习」中介绍过了,这里就不在啰嗦,列出一部分给大家看的,需要注意的是 for 循环的使用,以及代码中 sum 的作用,我个人觉得这个操作还是非常有效的减少了代码长度,当然也欢迎指教!


优化改进:


本次的程序当然还有一些不足的地方,比如代码长度的优化,还有这个程序只能爬取一场比赛,如何将几场比赛的数据都爬取下来!


本次完整的代码我已经上传到 Github 上,需要的同学可以点击「阅读原文」就可以看到完整的代码啦!



最近有点忙,一定会努力挤时间出来与大家分享的!



如果觉得文章还不错的话,还请大家点赞分享下。算是对「fightjiang」最大的支持!



       每 天 分 享 Python 干 货

       

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值