如何爬取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(0, 0, "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 干 货