0

我想在 Google Play 中查看用户对我的应用的星星投票。有什么解决办法吗?

4

4 回答 4

1

不幸的是,目前没有用于开发人员统计的 API。像Andlyitics这样的应用程序使用屏幕抓取,这就是为什么在控制台发生变化时必须更新它们的原因。

从那里播放商店页面:

请注意,Google 不提供稳定的 API 来获取下载和评分统计信息。因此,如果 Android Market 发生变化,Andlytics 可能无法正常工作。在这种情况下,请耐心等待我们努力赶上变化。

于 2012-11-30T08:27:07.677 回答
1

一种方法是从位于 HTML 中的内联 JSON 中解析数据。beautifulsoup在 Python 中使用、lxmlrequests库和正则表达式抓取应用程序评论计数和评级的示例方法。

在线 IDE 中的代码和完整示例:

# Super-Mario game is being scraped in this example:
# https://play.google.com/store/apps/details?id=com.nintendo.zara&gl=US

from bs4 import BeautifulSoup
import requests, lxml, re, json

params = {
    "id": "com.nintendo.zara", # app name
    "hl": "en",                # language
    "gl": "us"                 # country
}

headers = {
    "User-Agent":
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3538.102 Safari/537.36"
}

html = requests.get("https://play.google.com/store/apps/details", params=params, headers=headers, timeout=10)
soup = BeautifulSoup(html.text, "lxml")

# [12] index <script> position is not changing. Other <script> tags position are changing.
# [12] index is a basic app information.
# https://regex101.com/r/DrK0ih/1
basic_app_info = json.loads(re.findall(r"<script nonce=\".*\" type=\"application/ld\+json\">(.*?)</script>", str(soup.select("script")[12]), re.DOTALL)[0])

app_rating = round(float(basic_app_info["aggregateRating"]["ratingValue"]), 1)  # 4.287856 -> 4.3
app_reviews = basic_app_info["aggregateRating"]["ratingCount"]
print(app_rating, app_reviews, sep="\n")

# 4.0
# 1619960

将搜索参数创建为字典:

# https://docs.python-requests.org/en/master/user/quickstart/#passing-parameters-in-urls
params = {
    "id": "com.nintendo.zara", # app name
    "hl": "en",                # language
    "gl": "us"                 # country
}

创建标头以充当“真实”用户访问,以便 Google 不会立即将您的请求视为机器人请求:

# https://docs.python-requests.org/en/master/user/quickstart/#custom-headers
headers = {
    "User-Agent":
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3538.102 Safari/537.36"
}

发出请求,将params和传递headers给请求并创建一个BeautifulSoup对象,其中 HTML 将被处理和解析:

html = requests.get("https://play.google.com/store/apps/details", params=params, headers=headers, timeout=10)
soup = BeautifulSoup(html.text, "lxml")

查找标签,从所有基本应用信息所在的索引标签中<scprit>解析出需要的数据,然后通过正则表达式只解析JSON部分:[12]<scprit>

# https://regex101.com/r/DrK0ih/1
basic_app_info = json.loads(re.findall(r"<script nonce=\".*\" type=\"application/ld\+json\">(.*?)</script>", str(soup.select("script")[12]), re.DOTALL)[0])
  • json.loads()将 JSON 字符串转换为 Python 字典。

通过正则表达式从实际 JSON 响应中解析数据比通过 CSS 选择器抓取更安全。CSS 选择器可能会更改,在这种情况下,您必须渲染页面以抓取数据,如果使用浏览器自动化,这将变得很慢。

访问数据并打印:

app_rating = round(float(basic_app_info["aggregateRating"]["ratingValue"]), 1)  # 4.287856 -> 4.3
app_reviews = basic_app_info["aggregateRating"]["ratingCount"]
print(app_rating, app_reviews, sep="\n")

# 4.0
# 1619960

如果您想了解如何在 Python 中抓取更多数据,您可以阅读我的 Python博客文章中的Scrape Google Play Store App 中的其余内容。

如果您想使用完整的解决方案,您可以使用免费google-play-scraper的 Pythongoogle-play-scraperJavaScript,或者来自 SerpAPI 的Google Play Store API ,这是一个付费 API,具有免费计划,可以为用户处理抓取、绕过阻塞、缩放。

于 2022-02-03T09:44:38.833 回答
0

这很简单。转到 Google Play 商店:https://play.google.com/store?hl=en

在顶部栏中搜索您的。如果你找到你的应用程序,你可以看到星星投票。

希望这可以帮助。

于 2012-11-30T08:32:09.513 回答
0

https://play.google.com/store/apps/details?id=

您将在页面右侧和底部找到评分。如果您想查看用户评论。单击描述上方显示的用户评论选项卡

于 2012-11-30T08:26:27.543 回答