2016-03-31 19 views
0

私はVerizonの買戻し価格設定サイトからデータをスクラップしようとしています。私はブラウザで「ネット」リクエストを通過している間に情報源を見つけました。サイトはJSON形式ですが、私が何もしないとそのデータをダウンロードできますhttps://www.verizonwireless.com/vzw/browse/tradein/ajax/deviceSearch.jsp?act=models&car=Verizon&man=Apple&siz=largeJSONソースからPython-JSON形式を取り出せません

私が試したことはすべて覚えていませんが、ここで問題があります。また、複数のコードブロックを挿入する方法がわかりません。

import json,urllib,requests 
res=urllib.request.urlopen(url) 
data=json.loads(res) 
TypeError: the JSON object must be str, not 'bytes' 

import codecs 
reader=codecs.getreader('utf-8') 
obj=json.load(reader(res)) 
ValueError: Expecting value: line 1 column 1 (char 0) 
#this value error happens with other similar attempts, such as.... 
res=requests.get(url) 
res.json()#Same error Occurs 

この時点で私は多くの時間を研究し、解決策を見つけることができませんでした。私は、サイトが通常どおりフォーマットされていないと思っています。 Web開発ツールでJSONリクエスト/構造が表示されます。

誰にでもこれに関するアイデアや解決策はありますか?ご質問がある場合はお知らせください。

+0

VerizonはJSON形式の文字列(何である '、HTMLタグの内部に埋め込まJSON-探しているものをHTMLページではなく返送されたためです。 json() 'が入力として受け取ります)。 [この回答](http://stackoverflow.com/questions/13323976/how-to-extract-a-json-object-that-was-defined-in-a-html-page-javascript-block-us)should should助けます。 –

答えて

0

User-Agent HTTPヘッダーフィールドを送信する必要があります。このプログラムを試してみてください:

import requests 

url='https://www.verizonwireless.com/vzw/browse/tradein/ajax/deviceSearch.jsp?act=models&car=Verizon&man=Apple&siz=large' 
# Put your own contact info in next line 
headers = {'User-agent':'MyBot/0.1 ([email protected])'} 
r = requests.get(url, headers=headers) 
print(r.json()['models'][0]['name']) 

結果:

iPhone 6S 
関連する問題