2017-12-19 6 views
1

私は、オンラインのこのJSONファイルに手を差し伸べる必要のあるコードを書いており、データを検索して検索結果を返します。ウェブベースのJSONを読む

adsb_data = urllib2.urlopen('http://website.com')  

urllib2.HTTPErrorをスローします:HTTPエラー403:

は、私は、次のコードを試してみましたので、明らかに

を禁じ、私はそれについて最善の方法をつもりはありません。 JSONページを開いてスクラップして結果を表示するにはどうすればよいでしょうか?私はこれを行うためにはるかにエレガントで無声の方法があるように感じる。

+1

これはむしろ奇妙です。私はurllibでエラーを再現できます。しかし、これを試してみると、http://docs.python-requests.org – masterfloda

+1

リクエストを使用するとうまくいきます。[urllib2.HTTPError:HTTP Error 403:Forbidden](https://stackoverflow.com)/a/13303773/1248974) – davedwards

+0

HTTP 403は非常に誤解を招くことがあります。他の4xxコードでなければなりません。 400でもさらに適切です... – masterfloda

答えて

2

特定のサーバーがPythonのユーザーエージェントをブロックしているように見えます。これはあなたのために働くはずです:

url = "http://public-api.adsbexchange.com/VirtualRadar/AircraftList.json" 
dummy_ua = "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11" 
request = urllib2.Request(url, headers={'User-Agent' : dummy_ua}) 
urllib2.urlopen(request).read() 
+0

これは本当に興味深い解決策です。私はそれがユーザーエージェントをブロックしているかもしれないと考えていませんでした。私はブラウザーにいなかったので、それは私の心を横切っていませんでした。ありがとうございました! – OutlawBandit

0

すべての良い答え!皆さん、ありがとうございました。

urllib2の代わりにrequestsを使用して問題を解決しました。ここで が私の要求がどのように見えるかです:そこから

adsb_data = http_request('http://public-api.adsbexchange.com/VirtualRadar/AircraftList.json', 'GET') 

、私はリストを作成し、私はそれから望んでいたデータを解析されました。