python 爬取新浪网站 NBA球员最近2个赛季库里前20场数据
1. 分析新浪网站中球员数据的获取方式(F12 开发者模式,调试网页):
一般网站保存数据的方式分为2种:1. 静态网页存储;2. 动态请求;
对于静态网页存储来说,就是打开浏览器中查看源码,就可以从源码中获取所需要的数据;
对于动态请求来说,采用F12的开发者模式中,才能从服务器的response 中查看到data数据。
查看该网址的源码:https://slamdunk.sports.sina.com.cn/player/query?pid=8ec91366-faea-4196-bbfd-b8fab7434795,发现无法从网页中获取数据,故该网站采用的是动态请求。
对于动态请求有2中方式:1. Get方式;2. Post方式;其中Post方式需要url以及提交参数。
举例说明,采用F12分析上述网址,得到如下内容,其中该网址采用POST方式,用python请求时,需要将URL和Form Data一起提交给服务器:
1.General:
Request URL:https://slamdunk.sports.sina.com.cn/api?p=radar&s=summary&a=search&limit=10?callback=ijax_1512828812920_72693455
Request Method:POST
Status Code:200 OK
Remote Address:111.13.87.205:443
2.Form Data:
page:1
pid:8ec91366-faea-4196-bbfd-b8fab7434795
type:REG
tid:583ec825-fb46-11e1-82cb-f4ce4684ea4c
season1:2017
season2:2017
items:[{"key":"points","op":">=","value":"0"}]
callback:ijax_1512828812920_72693455
2. 写爬虫的python 代码前准备:
1. 学会使用urllib2的request请求;
2. 学会python处理json数据;举例:result = json.loads(html),该代码的作用是将json数据变为python内部数据格式之“字典”
3. 学会使用xlwt库,操作excel表格;
4. 学会python的字典数据结构;
5. 学会python的循环语句;
3. 爬虫编码如下:
# !usr/bin/env python
# _*_ coding:utf-8 -*-
__author__ = 'wangzhen'import urllib,urllib2
import json
#操作excel表格
import xlwtheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36','Referer':'https://slamdunk.sports.sina.com.cn/player/query?pid=8ec91366-faea-4196-bbfd-b8fab7434795'
}
def getPlayerData(season):url = 'https://slamdunk.sports.sina.com.cn/api?p=radar&s=summary&a=search&limit=?callback=ijax_1512224580290_80173252'postdata = {'page':'1','pid' :'8ec91366-faea-4196-bbfd-b8fab7434795','type':'REG','tid' :'583ec825-fb46-11e1-82cb-f4ce4684ea4c','season1':'%s' %(season),'season2':'%s' %(season),'items':'[{"key":"points","op":">","value":"0"},{"key":"points","op":">","value":"0"},{"key":"points","op":">","value":"0"},{"key":"points","op":">","value":"0"}]'}data = urllib.urlencode(postdata)req = urllib2.Request(url,data)req.headers = headersres = urllib2.urlopen(req)html = res.read()result = json.loads(html)result = result[u'result']data = result[u'data']players = data[u'players']return players#设置单元格样式
def set_style(name,height,bold=False):style = xlwt.XFStyle() # 初始化样式font = xlwt.Font() # 为样式创建字体font.name = name # 'Times New Roman'font.bold = boldfont.color_index = 4font.height = heightstyle.font = fontreturn styleif __name__ == '__main__':f = xlwt.Workbook() # 创建工作簿for i in range(2016,2018):players = getPlayerData(i)'''创建sheet:'''sheet = f.add_sheet(u'%s-%s' %(i,i+1), cell_overwrite_ok=True) # 创建sheetrow0 = [u'球员', u'日期', u'比赛', u'类型', u'赛果', u'首发', u'时间', u'得分', u'投篮',u'投篮%',u'三分',u'三分%',u'罚球',u'罚球%',u'前场板',u'后场板',u'总篮板',u'助攻',u'失误',u'抢断',u'盖帽',u'犯规']# 生成第一行for i in range(0, len(row0)):sheet.write(0, i, row0[i], set_style('Times New Roman', 220, True))column = 1for player in players:if(player[u'type']!=u'常规赛'):continue#i = 0#for item in player:#sheet.write(column, i, player[item])#i += 1#column += 1sheet.write(column,0,'%s-%s' %(player['first_name'],player[u'last_name']))sheet.write(column,1,'%s' %(player[u'date']))sheet.write(column,2,'%s%s-%s%s' %(player[u'team_name'],player[u'score'],player[u'opp_score'],player[u'opp_team_name']))sheet.write(column,3,'%s' %(player[u'type']))sheet.write(column,4,'%s')sheet.write(column,5,'%s' %(player[u'starter']))sheet.write(column,6,'%s' %(player[u'minutes']))sheet.write(column,7,'%s' %(player[u'points']))sheet.write(column,8,'%s-%s' %(player[u'field_goals_made'],player[u'field_goals_att']))sheet.write(column,9,'%s' %(player[u'field_goals_pct']))sheet.write(column,10,'%s-%s' %(player[u'three_points_made'],player[u'three_points_att']))sheet.write(column,11,'%s' %(player[u'three_points_pct']))sheet.write(column,12,'%s-%s' %(player[u'free_throws_made'],player[u'free_throws_att']))sheet.write(column,13,'%s' %(player[u'free_throws_pct']))sheet.write(column,14,'%s' %(player[u'offensive_rebounds']))sheet.write(column,15,'%s' %(player[u'defensive_rebounds']))sheet.write(column,16,'%s' %(player[u'rebounds']))sheet.write(column,17,'%s' %(player[u'assists']))sheet.write(column,18,'%s' %(player[u'turnovers']))sheet.write(column,19,'%s' %(player[u'steals']))sheet.write(column,20,'%s' %(player[u'blocks']))sheet.write(column,21,'%s' %(player[u'personal_fouls']))column += 1f.save(u'nbaplayer.xls') # 保存文件
4. 导出的数据:
|
python 爬取新浪网站 NBA球员最近2个赛季库里前20场数据相关推荐
- python爬取bilibili弹幕_用Python爬取B站视频弹幕
原标题:用Python爬取B站视频弹幕 via:菜J学Python 众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一 ...
- python爬取B站关注列表
python爬取B站关注列表 一.数据库的设计与操作 1.数据的分析 2.数据库设计 3.数据库操作 二.爬虫 三.完整代码 四.[项目仓库](https://github.com/Concyclic ...
- Python爬取B站弹幕方法介绍
Python爬取B站弹幕方法介绍 文章目录 Python爬取B站弹幕方法介绍 前言 寻找弹幕数据 编写爬虫 B站弹幕数量 新技术介绍 参考文章 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数 ...
- python接收弹幕_闲着没事,尝试一下用Python爬取B站弹幕呀~
原标题:闲着没事,尝试一下用Python爬取B站弹幕呀~ 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数据做分析,于是请我帮忙爬取 B 站视频的弹幕数据. 对于爬虫而言,我们需要找到对应数据 ...
- 萌新学习Python爬取B站弹幕+R语言分词demo说明
代码地址如下: http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这 ...
- python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序
学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...
- Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!
[CSDN 编者按]<哪吒>看哭了无数人!编者看的那场,有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下 ...
- python为啥爬取数据会有重复_使用python爬取B站千万级数据
Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...
- 用Python爬取B站弹幕并做成词云
用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...
最新文章
- MapReduce的序列化案例
- linux pssh parallel-ssh 批量执行远程shell命令
- 【MATLAB】变量 ( 变量引入 | 变量类型 )
- Python初学者选择集成开发环境的原则!可以从以下几个方面着手
- 使用 Docker 让传统 .NET 应用程序现代化
- min里所有的参数都不存在_高中生物所有的考点难点,其实都在你不仔细看的课本里,必修1-3超强记忆手册!...
- 漫谈Servlet(一)
- QTP连接数据库,并将数据保存至Excel中
- 二次与三次B样条曲线c++实现
- U2000V1R2安装部署工作日报
- 【叨、校长】一个基于Extjs、Pushlet美轮美奂的Web聊天室
- 网利友联CEO王卫平受邀坐客飞官七直播间
- WebStorm+Chrome插件JetBrains IDE Support进行实时调试
- 在Windows 2012 R2上安装Intel I217-V/I218-V网卡驱动
- 指导教师邱栋在2012年CSDN高校研讨会上的演讲
- 2021年中国社会客货运输量及周转量情况分析[图]
- JAVA json字符串格式化
- 微软免费杀毒软件MSE 2.1明日迎来首次更新
- 脑结构、脑工作原理最详细图解
- Kendall tau distance理解与分析
热门文章
- 鸿蒙系统发布声明华为,华为王成录表示鸿蒙即将开源系统 华为发声明重申不造车...
- Photo Sphere Viewer渲染全景图片
- 【Verilog数字系统设计(夏宇闻)4-----Verilog语法的基本概念2】
- JavaStudy7(18章-坦克大战2)—B站韩顺平
- Fedora 修复中文输入法
- 让Mac Dock栏(程序坞)只显示已打开的应用程序软件
- 芝士糖豆打造AR潮玩新体验
- [HTC Vive + Unity开发]——VRTK的研究——用手柄旋转物体(使用VRTK_Knob脚本)
- 深入理解使用pandas的groupby与resample后索引的变换
- 仿团购app连接mysql_美团App(仿) - iOS开发