2017-10-20 29 views
0

私はウェブスクレイピングには非常に新しいので、nba.comからいくつかのNBAプレーヤーのデータを掻き集めることにいくつか問題があります。私は最初にbs4を使ってページを掻き集めようとしましたが、いくつかの研究の後で私が読んだ記事の「XHR」に起因すると考えられる問題に遭遇しました。 json形式のデータにWebアドレスを見つけることができましたが、私のpythonプログラムは動作しなくなり、データをロードしませんでした。繰り返しますが、私はウェブスクレイピングで非常に新しいですが、私がここで道を離れるかどうかを知ると思っていました...どんな提案?ありがとう! (下記コード)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

答えて

1

に動作します...ユーザーエージェントヘッダーが異なっているので、それがあることに気づいたが、この打撃を与えます。私が定義したタイトルに従って、そのページからすべてのカテゴリを生成します。 Btw、あなたの最初の試行では、ウェブページがあなたのリクエスト内で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 .comiclovida.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個しか取得できません。私はバスケットボールの例が同じページのすべてのデータを持っているのを見ました。何かヒント? –

0

はちょうどそれらが追加されたら、それは

+1

[こちら](http://docs.python-requests.org/ja/master/)のようにr.json()を直接使用することもできます – Thecave3

関連する問題