我想从Google Play商店刮掉特定应用程序的所有评论。我准备了以下脚本:
# App Reviews Scraper
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
url = "https://play.google.com/store/apps/details?id=com.android.chrome&hl=en&showAllReviews=true"
# make request
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)
SCROLL_PAUSE_TIME = 5
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
time.sleep(SCROLL_PAUSE_TIME)
while True:
# Scroll down to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
# Get everything inside <html> tag including javscript
html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
soup = BeautifulSoup(html, 'html.parser')
reviewer = []
date = []
# review text
for span in soup.find_all("span", class_="X43Kjb"):
reviewer.append(span.text)
# review date
for span in soup.find_all("span", class_="p2TkOb"):
date.append(span.text)
print(len(reviewer))
print(len(date))
但是,它始终只显示203。有35,474,218条评论。那么,我如何下载所有的评论呢?
3条答案
按热度按时间d5vmydt91#
只需添加此选项,即可检查您的无限滚动中是否显示更多元素。
导入:
rdrgkggo2#
更轻松地从Play商店抓取APP数据
)
转换成 Dataframe
v2g6jxz63#
我认为,由于谷歌的限制,没有办法提取所有评论。例如,
com.collectorz.javamobile.android.books
APP有2470条评论,滚动到评论末尾实际显示879条,减少了64.41%的变化。Calculation示例:
在滚动到评论的最后时,在Chrome开发工具中:
在新的用户界面中,出现了一个显示更多按钮,执行可能会停止/停滞或抛出错误,从而减少审查。
要提取所有可用的数据,您需要检查查看所有评论按钮是否存在。如果该应用程序的评论很少或根本没有评论,则该按钮可能会缺失。如果该按钮存在,则需要单击该按钮并等待数据加载:
加载数据后,您需要滚动页面。您可以对页面滚动算法进行小小的更改。如果变量
new_height
和old_height
相等,则程序将查找显示更多按钮选择器。如果此按钮存在,则程序将单击该按钮并继续执行下一步:在线IDE中的代码和完整示例:
如果您想要更快地提取评论,可以使用SerpApi中的Google Play Product Reviews API。它将绕过搜索引擎的块,您不必从头开始创建和维护解析器。
对所有页面进行分页并提取评论的代码示例:
有一个Scrape All Google Play App Reviews in Python博客,详细介绍了如何提取所有评论。
免责声明我为SerpApi工作。