2016-08-12 5 views
0

コードをデコードすることができ、非常に簡単です:Python関数、json.loads():いいえJSONオブジェクトは

import requests 
import json 

r = requests.get('https://www.baidu.com/') 
r.encoding = 'utf-8' 
json.loads(r.text,'utf-8') 

私はいつも、このエラー情報を受け取る:

Traceback (most recent call last): 
File "<pyshell#57>", line 1, in <module> 
json.loads(r.text,'utf-8') 
File "C:\Python27\lib\json\__init__.py", line 352, in loads 
return cls(encoding=encoding, **kw).decode(s) 
File "C:\Python27\lib\json\decoder.py", line 364, in decode 
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode 
raise ValueError("No JSON object could be decoded") 
ValueError: No JSON object could be decoded 

誰も私が解決に役立つことができますこの問題?ありがとう!このコードは何が起こっているのかを把握するのに役立ちます

+4

'baidu.com'から送信された応答はJSONではないからです。あなたのブラウザで 'https:// www.baidu.com /'を開き、あなたが得るものを見てください。 – ozgur

+0

ありがとうございます。r.textから取得したものは、 \ r \ n \ r \ n \ t \ r \ n \ r \ n \ r \ n \ t \ r \ n \ r \ n 'です。何が問題なのか分かりますか? – Yuandong

+0

JSONに変換できないものがあります。 – ozgur

答えて

0

;)

import requests 
import json 

r = requests.get('https://www.baidu.com/') 
r.encoding = 'utf-8' 

try: 
    foo = json.loads(r.text, 'utf-8') 
    print "Yay, I got a json from baidu!" 
except Exception, e: 
    print "Why didn't i get a json from baidu? Maybe it wasn't a json..." 
    print "What is it then? It seems is a {0} whose length is {1}".format(
     r.text.__class__, len(r.text) 
    ) 
+0

私はあなたのコードを実行し、 'それは unicode'>の長さが227です。 – Yuandong

+0

r.text = u ' \ r \ n \ r \ n \ t \ r \ n \ r \ n \ r \ n \ t \ r \ n \ r \ n ' – Yuandong

+0

@Yuandong正確には、ご覧のとおり、JSONではないHTMLコードを含む文字列です。そのためデコードできないのですが、代わりにJSONオブジェクトを返すようにリクエストする必要があります。 – BPL

関連する問題