正在学习与请求库和熊猫配合使用的经验,但是即使在线上有大量示例,也一直在努力超越起点。
我正在尝试使用GET请求从下面的URL中提取NBA射击数据,然后将其转换为DataFrame:
while(keys.hasNextLine()) {
if (keys.hasNextInt()) { //validation that will read lines until it see's an integer and stores that number
multiplier = keys.nextInt(); //Stores the number from text
} else {
words += keys.nextLine();//Stores the lines of text
if(words.endsWith(words.substring(words.lastIndexOf(" ")+1))) {
words += '\n';
}
}
}
但是我从第2行“ response = requests.get(url)”开始出现此错误
ValueError:无法解码JSON对象
我想我缺少一些基本的知识,感谢任何调试帮助!
答案 0 :(得分:2)
问题是您使用错误的URL来获取数据。
您使用的URL用于HTML,它负责网站的布局。数据来自另一个URL,该URL以JSON格式获取。
您要查找的数据的正确URL是:
https://stats.nba.com/stats/shotchartdetail?CFID=33&CFPARAMS=2017-18&ContextMeasure=FGA&DateFrom=&DateTo=&EndPeriod=10&EndRange=28800&GameID=&GameSegment=&GroupQuantity=5&LastNGames=0&LeagueID=00&Location=&Month=0&OnOff=&OpponentTeamID=0&Outcome=&PORound=0&Period=0&PlayerID=201935&PlayerPosition=&RangeType=0&RookieYear=&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&StartPeriod=1&StartRange=0&TeamID=0&VsConference=&VsDivision=
如果在浏览器上运行它,则只能看到原始JSON数据(正是从代码中获得的数据),并使它正常工作。
此博客文章介绍了查找数据URL的方法,尽管自从撰写该文章以来,API发生了一些变化,但该方法仍然有效: http://www.gregreda.com/2015/02/15/web-scraping-finding-the-api/