Scrapping json网页

Scrapping json网页

问题描述:

我对网络抓取非常陌生,并且在从nba.com抓取一些NBA球员数据时遇到了一些麻烦。我首先试图用bs4来刮页面,但碰到一个问题,经过一些研究后,我认为这是由于我阅读的文章中的“XHR”。我能够找到json格式数据的网址,但我的python程序似乎陷入了困境,并且从未加载数据。再次,我在网络抓取方面很新颖,但是我想我会看看我是否在这里偏离轨道......有什么建议吗?谢谢! (下面的代码)Scrapping json网页

import requests 
import json 

url = "http://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&VsConference=&VsDivision=&Weight=" 

resp = requests.get(url=url) 
data = json.loads(resp.text) 
print(data) 
+0

为什么不看图书馆来帮忙? https://github.com/seemethere/nba_py或至少看看他们是如何做到的? – corn3lius

+0

还没有找到,谢谢你看! – johankent30

给这个一杆。它将根据我定义的标题生成该页面中的所有类别。顺便说一句,你没有得到第一个与你的初始尝试的反应,因为网页预计在您的请求User-Agent,以确保请求不是来自机器人,而是来自任何真正的浏览器。但是,我伪造了它并找到了答案。

import requests 

url = "http://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&VsConference=&VsDivision=&Weight=" 
resp = requests.get(url,headers={'User-Agent':'Mozilla/5.0'}) 
data = resp.json() 

storage = data['resultSets'] 
for elem in storage: 
    all_list = elem['rowSet'] 

    for item in all_list: 
     Player_Id = item[0] 
     Player_name = item[1] 
     Team_Id = item[2] 
     Team_abbr = item[3] 
     print("Player_Id: {} Player_name: {} Team_Id: {} Team_abbr: {}".format(
      Player_Id,Player_name,Team_Id,Team_abbr)) 
+0

我试着用这个url的方法:“http:// www .enciclovida.mx/explora-por-region/especies-por-grupo?utf8 = \ xe2 \ x9c \ x93&grupo_id = Plantas&region_id =&parent_id =&pagina =&nombre =“ 我总是得到一个500,关于如何适应它的想法? –

+0

我无法填充任何错误。它仍然有效。 – SIM

+0

mmm我试着设置一个region_id,我得到的结果回来了,但是当它们进入页面(pagina =)时,我只能得到前10个,它们应该大于500页;我看到篮球榜上的所有数据都在同一页。任何提示? –

就意识到,这是因为用户代理头是不同的......一旦这些被添加它的工作原理

+1

你也可以直接使用r.json(),如图所示[这里](http://docs.python-requests.org/en/master/) – Thecave3