介绍
小编给大家分享一下如何使用Python实现爬虫爬取NBA数据功能,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
具体如下:
爬取的网站为:stat-nba.com,这里爬取的是nba2016 - 2017赛季常规赛至2017年1月7日的数据
改变url_header和url_tail即可爬取特定的其他数据。
源代码如下:
#=utf - 8编码 import 系统 重载(系统) sys.setdefaultencoding (& # 39; utf - 8 # 39;) import 请求 import 时间 import urllib 得到bs4 import  BeautifulSoup import 再保险 得到pyExcelerator import * def getURLLists (url_header url_tail,页): “才能”;“ 获才能取所有页面的URL列表 “才能”;“ 时间=url_lists 才能;[] 时间=url_0 才能;url_header + & # 39; 0 & # 39; + url_tail print url_0才能 url_lists.append才能(url_0) for 才能小姐:拷贝范围(1页+ 1): ,,,url_temp =, url_header + str (i) + url_tail ,,,url_lists.append (url_temp) return url_lists才能 def getNBAAllData (url_lists): “才能”;“ 2017年获才能取所有赛季NBA常规赛数据 “才能”;“ 时间=datasets 才能;[& # 39;& # 39;] for 才能;item  url_lists:拷贝 ,,,data1 =, getNBASingleData(项) ,,,datasets.extend (data1) #才能去掉数据里的空元素 for 才能;item 拷贝数据集[:]: ,,,if len(项),==,0: ,,,,,datasets.remove(项) ,return 数据集 def getNBASingleData (url): “才能”;“ 获才能取1个页面NBA常规赛数据 “才能”;“ #,才能url =, & # 39; http://stat-nba.com/query_team.php?QueryType=game&订单=1,crtcol=date_out& GameType=season& PageNum=3000, Season0=2016, Season1=2017 & # 39; #,才能html =, requests.get。text (url) 时间=html 才能;urllib.urlopen (url) .read () #,才能print html 时间=soup 才能;BeautifulSoup (html) data 才能=,soup.html.body.find (& # 39; tbody # 39;)。text 时间=list_data 才能;data.split (& # 39; \ n # 39;) #,才能with 开放(& # 39;nba_data.txt& # 39; & # 39;一个# 39;),as 外交政策: #才能,,,fp.write(数据) #,才能for item 拷贝list_data [:]: #才能,,,if len(项),==,0: 号,,,,,,,list_data.remove(项) return list_data才能 def saveDataToExcel(数据集、sheetname文件名):=book 才能、工作簿() 时间=sheet 才能;book.add_sheet (sheetname) sheet.write才能(0,0,u # 39;序号& # 39;) sheet.write才能(0,1,u # 39;球队& # 39;) sheet.write才能(0 2 u # 39;时间& # 39;) sheet.write才能(0 3 u # 39;结果& # 39;) sheet.write才能(0 4 u # 39;主客& # 39;) sheet.write才能(0 5 u # 39;比赛& # 39;) sheet.write才能(0 6 u # 39;投篮命中率& # 39;) sheet.write才能(0 7 u # 39;命中数& # 39;) sheet.write才能(0 8 u # 39;出手数& # 39;) sheet.write才能(0 9 u # 39;三分命中率& # 39;) sheet.write才能(0 10 u # 39;三分命中数& # 39;) sheet.write才能(0 11 u # 39;三分出手数& # 39;) sheet.write才能(0 12 u # 39;罚球命中率& # 39;) sheet.write才能(0 13 u # 39;罚球命中数& # 39;) sheet.write才能(0,14日u # 39;罚球出手数& # 39;) sheet.write才能(0 15 u # 39;篮板& # 39;) sheet.write才能(0,16日u # 39;前场篮板& # 39;) sheet.write才能(0,17日,u # 39;后场篮板& # 39;) sheet.write才能(0,18岁的你# 39;助攻& # 39;) sheet.write才能(0,19日u # 39;抢断& # 39;) sheet.write才能(0 20 u # 39;盖帽& # 39;) sheet.write才能(0,21日u # 39;失误& # 39;) sheet.write才能(0,22岁,你# 39;犯规& # 39;) sheet.write才能(0,23岁,u # 39;得分& # 39;) num 才能=24 row_cnt 才能=0 data_cnt 才能=0 data_len 才能=,len(数据集) print 才能;& # 39;data_len: & # 39; data_len 而才能(data_cnt<, data_len): ,,,row_cnt +=1 ,,,print & # 39;序号:& # 39;row_cnt ,,,for col 拷贝范围(num): ,,,,,,,# print 坳 ,,,,,,,sheet.write (row_cnt坳,数据集[data_cnt]) ,,,,,,,data_cnt +=1 book.save才能(文件名) def writeDataToTxt(数据): fp =,开放才能(& # 39;nba_data.txt& # 39; & # 39; w # 39;) line_cnt 才能=1 for 才能小姐:拷贝范围(len(数据)1): ,,,#球队名称对齐的操作:如果球队名字过短或者为76人队是,球队名字后面加两个table 否则加1个表 ,,,if line_cnt %, 24,==, 2,以及len(数据集[我]),& lt;, 5,或是数据集[我],==,u # 39;费城76人& # 39;: ,,,,,fp.write(数据集[我]+ & # 39;\ t \ t # 39;) ,,,: ,,,,,fp.write(数据集[我]+ & # 39;\ t # 39;) null null null null null null null null null null null null null null null如何使用Python实现爬虫爬取NBA数据功能