2017-04-08 70 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

对不起....仍然有相同的错误信息.... –