Python实现爬虫爬取NBA数据功能示例
本文实例讲述了Python实现爬虫爬取NBA数据功能。分享给大家供大家参考,具体如下:
爬取的网站为:stat-nba.com,这里爬取的是NBA2016-2017赛季常规赛至2017年1月7日的数据
改变url_header和url_tail即可爬取特定的其他数据。
源代码如下:
#coding=utf-8 importsys reload(sys) sys.setdefaultencoding('utf-8') importrequests importtime importurllib frombs4importBeautifulSoup importre frompyExceleratorimport* defgetURLLists(url_header,url_tail,pages): """ 获取所有页面的URL列表 """ url_lists=[] url_0=url_header+'0'+url_tail printurl_0 url_lists.append(url_0) foriinrange(1,pages+1): url_temp=url_header+str(i)+url_tail url_lists.append(url_temp) returnurl_lists defgetNBAAllData(url_lists): """ 获取所有2017赛季NBA常规赛数据 """ datasets=[''] foriteminurl_lists: data1=getNBASingleData(item) datasets.extend(data1) #去掉数据里的空元素 foritemindatasets[:]: iflen(item)==0: datasets.remove(item) returndatasets defgetNBASingleData(url): """ 获取1个页面NBA常规赛数据 """ #url='http://stat-nba.com/query_team.php?QueryType=game&order=1&crtcol=date_out&GameType=season&PageNum=3000&Season0=2016&Season1=2017' #html=requests.get(url).text html=urllib.urlopen(url).read() #printhtml soup=BeautifulSoup(html) data=soup.html.body.find('tbody').text list_data=data.split('\n') #withopen('nba_data.txt','a')asfp: #fp.write(data) #foriteminlist_data[:]: #iflen(item)==0: #list_data.remove(item) returnlist_data defsaveDataToExcel(datasets,sheetname,filename): book=Workbook() sheet=book.add_sheet(sheetname) sheet.write(0,0,u'序号') sheet.write(0,1,u'球队') sheet.write(0,2,u'时间') sheet.write(0,3,u'结果') sheet.write(0,4,u'主客') sheet.write(0,5,u'比赛') sheet.write(0,6,u'投篮命中率') sheet.write(0,7,u'命中数') sheet.write(0,8,u'出手数') sheet.write(0,9,u'三分命中率') sheet.write(0,10,u'三分命中数') sheet.write(0,11,u'三分出手数') sheet.write(0,12,u'罚球命中率') sheet.write(0,13,u'罚球命中数') sheet.write(0,14,u'罚球出手数') sheet.write(0,15,u'篮板') sheet.write(0,16,u'前场篮板') sheet.write(0,17,u'后场篮板') sheet.write(0,18,u'助攻') sheet.write(0,19,u'抢断') sheet.write(0,20,u'盖帽') sheet.write(0,21,u'失误') sheet.write(0,22,u'犯规') sheet.write(0,23,u'得分') num=24 row_cnt=0 data_cnt=0 data_len=len(datasets) print'data_len:',data_len while(data_cnt更多关于Python相关内容可查看本站专题:《PythonSocket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。