如何在Google Play商店抓取评论?

时间:2018-03-21 18:46:55

标签: python web-scraping web-crawler

在每个应用下的Google play store下(例如this one),有一长串评论。

但只展示了其中的一部分,而其他部分只有在您点击" next"箭头。

如何有效抓取所有应用的所有评论?

我试过的代码:

import bs4
from urllib.request import urlopen
url = "https://play.google.com/store/apps/details?id=com.google.android.youtube.tv&hl=en&pli=1"
response = urlopen(url)
html = response.read().decode("utf-8")

import bs4
from urllib.request import urlopen
from selenium import webdriver
# simulate the javascript
driver = webdriver.PhantomJS()
driver.get("https://play.google.com/store/apps/details?id=com.google.android.youtube.tv&hl=en&pli=1")

1 个答案:

答案 0 :(得分:0)

抓取谷歌可能是针对ToS的,但它在某些圈子里是一项全国性的运动。 (见youtube-dl。)我不会详细说明,因为我不相信我会在那里做一些好事,但我仍然想告诉你我会接近这个之类的事情。 (执行JavaScript和模拟按钮点击可能更容易实现,更易于维护,但效率更低。)

  1. 在浏览器的开发者工具中打开“网络”标签。
  2. 点击应用页面上需要的任何按钮。
  3. 查找包含数据的请求。
  4. 右键单击 - >复制 - >复制为cURL
  5. 执行此操作后,您将复制整个请求,包括Google Cookie(整个-H 'Cookie: ...',在我的情况下是几百个字符),所以首先删除它。不要与任何人分享。事实上,你也可以摆脱大多数其他标题。重要的部分是URL和--data参数。

    数据参数是URL编码的,因此您可能希望将其粘贴到https://www.urldecoder.org/之类的内容中以获得更好的概述。

    生成的--data参数以[[[136880256,[{"136880256":[null,null,[2,null,[40,开头。在此之后我们不知道long base64字符串是什么,所以我们只删除它。 (但是,事实证明这个字符串可能实现了分页。)所以我们继续""]],["com.google.android.youtube.tv",7]]}],null,null,0]]],并删除&at=...参数。一些探索向我们表明40意味着我们要求40条评论,将其更改为100条似乎可以获得100条评论。设置高于199的数字会给我们一个错误,但是这个特定的应用似乎只有150条评论(无论如何都是英文?)(或者至少评论页面只显示150条)。

    这是你将要获得的摘录:

    )]}'
    
    96917
    [["af.adr",0,{"136880256":[[["gp:AOqpTOE...
    ]
    ]
    ,1,null,"What a waste of a perfectly good app. The bloody awful bold font...