Python 谷歌应用程序的爬网评论

Python 谷歌应用程序的爬网评论,python,web,web-crawler,Python,Web,Web Crawler,我想使用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'

我想使用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

如何将其转换为json或结构化数据

感谢大家的时间

您可以使用json()方法转换python请求的响应

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数据

更新:

我测试了脚本,发现响应存在以下问题

  • 服务器发送的响应不是json。例如,它的开头有“
    u”)]}”\n\n“
    。要验证它,请打印响应。文本[:6]
  • 响应还包含一些unicode字符,即使在数据中指定了
    “charset”:“utf-8”
    ,响应也无法将这些字符编码为ascii

  • 我认为这就是您无法将响应作为json数据加载的原因。

    code:r.json()回溯(最近一次调用)返回complexjson.loads(self.text,**kwargs)文件“C:\Anaconda3\envs\py35\lib\json\u init\uuuu.py”,第319行,在加载返回的默认解码器中。解码文件“C:\Anaconda3\envs\py35\lib\json\decoder.py”,第339行,在decode obj中,end=self.raw_decode(s,idx=_w(s,0.end())文件“C:\Anaconda3\envs\py35\lib\json\decoder.py”,第357行,在raw_decode中,从None中提出jsondecodecorr(“期望值”,s,err.value),jsondecodecorr:Expecting值我得到了这个消息,然后尝试response.content并使用json.loads(response.content)加载response.content将是str。您可以使用load来加载str响应。我可以在您发布的响应中看到一些unicode字符。我怀疑这也可能是由于在使用json.loads()加载响应时,从包含Unicode字符的字符串加载json时看到了这一点。