如何使用Python实现爬虫爬取NBA数据功能

  介绍

小编给大家分享一下如何使用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数据功能