2017-04-08 76 views
0

我想使用Python 3.5 到抓取網站(谷歌應用程序商店評論),所以我得到的答案有關使用AJAX ....爬行的谷歌應用評價

url = "https://play.google.com/store/getreviews?authuser=0" 
param = {'reviewType': '0', 
     'pageNum': '1', 
     'id':'com.venticake.retrica', 
     'reviewSortOrder':'4', 
     'xhr':'1', 
     'token':'ZLqR3TmB64y6koyq8uj1tqqiQ4k:14191636750027', 
     'hl':'ko'} 

r = requests.post(url, data=param) 

d = json.loads(r.text) 

做這樣

但響應是

')]}\'\n\n[["ecr",1," \\u003cdiv class\\u003d\\"single-review\\" tabindex\\u003d\\"0\\"\\u003e \\u003cspan\\u003e \\u003cspan 

enter image description here

我如何使其JSON或結構化數據....

感謝你爲你們的時間

回答

0

您可以使用JSON()方法來蟒蛇要求的response.something轉換這樣的。

url = "https://play.google.com/store/getreviews?authuser=0" 

param = {'reviewType': '0', 
     'pageNum': '1', 
     'id':'com.venticake.retrica', 
     'reviewSortOrder':'4', 
     'xhr':'1', 
     'token':'ZLqR3TmB64y6koyq8uj1tqqiQ4k:14191636750027', 
     'hl':'ko'} 

response = requests.post(url, data=param) 
x = response.json() 

這會將響應序列化爲json數據。

更新:

我測試腳本,發現與應對以下問題。

  1. 服務器發送的響應不是json。例如它在開始時有u")]}'\n\n"。驗證它print response.text[:6]
  2. 響應還包含一些unicode字符,即使您在數據中指定了'charset': 'utf-8',也無法通過響應編碼爲ascii。

我認爲這些是你無法將響應加載爲json數據的原因。

+0

代碼:r.json() 回溯(最近通話最後一個) 回報complexjson.loads(self.text,** kwargs) 文件「C:\ Anaconda3 \ ENVS \ py35 \ LIB \ JSON \ __ init__ .py「,第319行,載入中 return _default_decoder.decode(s) 文件」C:\ Anaconda3 \ envs \ py35 \ lib \ json \ decoder.py「,行339,解碼爲 obj,end = self在raw_decode 文件「C:\ Anaconda3 \ envs \ py35 \ lib \ json \ decoder.py」中,第357行提出了JSONDecodeError(「http://code.google.com/p/docs/default.aspx」期望值「,s,err.value)from None JSONDecodeError:期望va lue 我收到了這條消息 –

+0

然後嘗試response.content並使用json.loads(response.content)加載response.content將是str。您可以使用加載來加載str響應。 – Mani

+0

對不起....仍然有相同的錯誤信息.... –