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. 导出的数据:

球员 日期 比赛 类型 赛果 首发 时间 得分 投篮 投篮% 三分 三分% 罚球 罚球% 前场板 后场板 总篮板 助攻 失误 抢断 盖帽 犯规
斯蒂芬-库里 2017-10-18 勇士121-122火箭 常规赛 %s True 29:33 22 8-18 44.4 3-9 33.3 3-3 100 0 5 5 4 2 1 0 4
斯蒂芬-库里 2017-10-21 勇士128-120鹈鹕 常规赛 %s True 35:09 28 7-16 43.8 4-11 36.4 10-10 100 0 3 3 8 1 0 0 1
斯蒂芬-库里 2017-10-22 勇士101-111灰熊 常规赛 %s True 30:05 37 9-17 52.9 6-11 54.5 13-13 100 0 6 6 3 2 0 0 5

python 爬取新浪网站 NBA球员最近2个赛季库里前20场数据相关推荐

  1. python爬取bilibili弹幕_用Python爬取B站视频弹幕

    原标题:用Python爬取B站视频弹幕 via:菜J学Python 众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一 ...

  2. python爬取B站关注列表

    python爬取B站关注列表 一.数据库的设计与操作 1.数据的分析 2.数据库设计 3.数据库操作 二.爬虫 三.完整代码 四.[项目仓库](https://github.com/Concyclic ...

  3. Python爬取B站弹幕方法介绍

    Python爬取B站弹幕方法介绍 文章目录 Python爬取B站弹幕方法介绍 前言 寻找弹幕数据 编写爬虫 B站弹幕数量 新技术介绍 参考文章 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数 ...

  4. python接收弹幕_闲着没事,尝试一下用Python爬取B站弹幕呀~

    原标题:闲着没事,尝试一下用Python爬取B站弹幕呀~ 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数据做分析,于是请我帮忙爬取 B 站视频的弹幕数据. 对于爬虫而言,我们需要找到对应数据 ...

  5. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下: http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这 ...

  6. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  7. Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!

    [CSDN 编者按]<哪吒>看哭了无数人!编者看的那场,有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下 ...

  8. python为啥爬取数据会有重复_使用python爬取B站千万级数据

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

  9. 用Python爬取B站弹幕并做成词云

    用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...

最新文章

  1. MapReduce的序列化案例
  2. linux pssh parallel-ssh 批量执行远程shell命令
  3. 【MATLAB】变量 ( 变量引入 | 变量类型 )
  4. Python初学者选择集成开发环境的原则!可以从以下几个方面着手
  5. 使用 Docker 让传统 .NET 应用程序现代化
  6. min里所有的参数都不存在_高中生物所有的考点难点,其实都在你不仔细看的课本里,必修1-3超强记忆手册!...
  7. 漫谈Servlet(一)
  8. QTP连接数据库,并将数据保存至Excel中
  9. 二次与三次B样条曲线c++实现
  10. U2000V1R2安装部署工作日报
  11. 【叨、校长】一个基于Extjs、Pushlet美轮美奂的Web聊天室
  12. 网利友联CEO王卫平受邀坐客飞官七直播间
  13. WebStorm+Chrome插件JetBrains IDE Support进行实时调试
  14. 在Windows 2012 R2上安装Intel I217-V/I218-V网卡驱动
  15. 指导教师邱栋在2012年CSDN高校研讨会上的演讲
  16. 2021年中国社会客货运输量及周转量情况分析[图]
  17. JAVA json字符串格式化
  18. 微软免费杀毒软件MSE 2.1明日迎来首次更新
  19. 脑结构、脑工作原理最详细图解
  20. Kendall tau distance理解与分析

热门文章

  1. 鸿蒙系统发布声明华为,华为王成录表示鸿蒙即将开源系统 华为发声明重申不造车...
  2. Photo Sphere Viewer渲染全景图片
  3. 【Verilog数字系统设计(夏宇闻)4-----Verilog语法的基本概念2】
  4. JavaStudy7(18章-坦克大战2)—B站韩顺平
  5. Fedora 修复中文输入法
  6. 让Mac Dock栏(程序坞)只显示已打开的应用程序软件
  7. 芝士糖豆打造AR潮玩新体验
  8. [HTC Vive + Unity开发]——VRTK的研究——用手柄旋转物体(使用VRTK_Knob脚本)
  9. 深入理解使用pandas的groupby与resample后索引的变换
  10. 仿团购app连接mysql_美团App(仿) - iOS开发