Python 抓取json网页

Python 抓取json网页,python,json,web-scraping,python-requests,Python,Json,Web Scraping,Python Requests,我对网络抓取非常陌生,在从NBA.com抓取一些NBA球员数据时遇到了一些麻烦。我第一次尝试使用bs4刮页面,但在经过一些研究后,我认为这是由于我读到的文章中的“XHR”引起的。我能够找到json格式数据的网址,但我的python程序似乎陷入了困境,从未加载数据。再一次,我对网页抓取非常陌生,但我想我会看看我是否偏离了轨道。。。有什么建议吗?谢谢(代码如下) 刚刚意识到这是因为用户代理头是不同的。。。一旦添加了这些,它就会起作用尝试一下。它将根据我定义的标题生成该页面的所有类别。顺便说一句,您最

我对网络抓取非常陌生,在从NBA.com抓取一些NBA球员数据时遇到了一些麻烦。我第一次尝试使用bs4刮页面,但在经过一些研究后,我认为这是由于我读到的文章中的“XHR”引起的。我能够找到json格式数据的网址,但我的python程序似乎陷入了困境,从未加载数据。再一次,我对网页抓取非常陌生,但我想我会看看我是否偏离了轨道。。。有什么建议吗?谢谢(代码如下)


刚刚意识到这是因为用户代理头是不同的。。。一旦添加了这些,它就会起作用

尝试一下。它将根据我定义的标题生成该页面的所有类别。顺便说一句,您最初的尝试没有得到响应,因为网页希望在您的请求中有一个
用户代理
,以确保请求不是来自机器人,而是来自任何真正的浏览器。然而,我伪造了它并找到了答案

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))

为什么不去图书馆看看呢?或者至少看看他们是怎么做到的?还没发现。。谢谢,我会看的!您也可以直接使用r.json(),如图所示,我用这个url尝试了您的方法:“\xe2\x9c\x93&grupo_id=Plantas®ion_id=&parent_id=&pagina=&nombre=”,我总是得到500分,即使是使用标题,关于如何调整它的任何想法?嗯,我尝试设置了一个region_id,我得到了结果,但当这些结果出现在页面中时(pagina=)我只得到前10页,它们应该>500页;我看到篮球示例的所有数据都在同一页中。有什么提示吗?
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))