Google Play で自分のアプリに対するユーザーによる星の投票を表示したいと考えています。それに対する解決策はありますか?
4 に答える
残念ながら、現在、開発者統計用の API はありません。Andlyiticsのようなアプリはスクリーン スクレイピングを使用するため、コンソールが変更されるたびに更新する必要があります。
そこからプレイストアページに続きます:
Google は、ダウンロードと評価の統計情報を取得するための安定した API を提供していないことに注意してください。そのため、Android マーケットで何かが変更された場合、Andlytics が正しく動作しない可能性があります。その場合は、変更に追いつくまでしばらくお待ちください。
これを行う 1 つの方法は、HTML にあるインライン JSON からデータを解析することです。beautifulsoup
、lxml
、requests
ライブラリ、および正規表現を使用して、Python でアプリのレビュー数と評価をスクレイピングするアプローチの例。
オンライン 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
リクエストを作成し、リクエストにおよびを渡し、 HTML が処理および解析されるオブジェクトheaders
を作成します。BeautifulSoup
html = requests.get("https://play.google.com/store/apps/details", params=params, headers=headers, timeout=10)
soup = BeautifulSoup(html.text, "lxml")
タグを検索し、すべての基本的なアプリ情報が配置されているindexタグ<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 でより多くのデータをスクレイピングする方法を理解したい場合は、Scrape Google Play Store App in Pythonブログ投稿で残りを読むことができます。
完全なソリューションを使用したい場合は、無料google-play-scraper
の Pythonまたはgoogle-play-scraper
JavaScript 用に使用するか、SerpAPI のGoogle Play Store APIを使用できます。これは有料の API で、スクレイピング、ブロックのバイパス、ユーザーのスケーリングを処理する無料プランがあります。
https://play.google.com/store/apps/details?id=にアクセスしてください
ページの右側と下部に評価が表示されます。必要に応じて、ユーザー レビューを参照してください。[説明] の上に表示されている [ユーザー レビュー] タブをクリックします。
それはとても簡単です。Google Play ストアに移動:https://play.google.com/store?hl=ja
トップバーであなたを検索します。あなたのアプリが見つかったら、星の投票を見ることができます。
お役に立てれば。