Як зібрати дані Google Play Store на Python
Два шляхи: пакет google-play-scraper з відкритим кодом для дрібних задач і API для всього, що має працювати щодня.
Шлях 1: бібліотека для парсингу
Пакет з відкритим кодом google-play-scraper завантажує сторінку магазину і розбирає її:
pip install google-play-scraper
from google_play_scraper import app
d = app("com.whatsapp", lang="en", country="us")
print(d["title"], d["installs"], d["score"])Для блокнота він чудовий. У продакшені ви зіткнетеся з трьома проблемами: обмеження частоти (Google відповідає 429 і капчами, щойно ви надсилаєте багато запитів з однієї IP), зміни розмітки (парсери ламаються без попередження) і пам'ять (коли застосунок видалено, сторінки немає — а з нею і даних).
Шлях 2: запитати індекс, який уже зібрано
import os, requests
r = requests.get("https://apiplay.cc/api/v1/app",
params={"id": "com.whatsapp"},
headers={"X-API-Key": os.environ["API_KEY"]}, timeout=30)
app = r.json()["app"]
print(app["title"], app["installs"]["label"], app["rating"]["score"])Ті самі поля, без проксі. Видалені застосунки теж відповідають, із встановленим status.removed.
Збір цілої категорії
Замість обходу сторінок категорій — фільтруйте:
params = {"category": "GAME_PUZZLE", "min_installs": 100000, "per": 100, "page": 1}
r = requests.get("https://apiplay.cc/api/v1/search", params=params, headers=H).json()
for a in r["results"]:
print(a["id"], a["installs"]["min"], a["rating"]["score"])Перебирайте page до r["pages"]. Кожна сторінка до 100 застосунків коштує 2 кредити.
Що обрати
- Разовий аналіз кількох сотень застосунків: бібліотеки досить.
- Щоденна задача, тисячі застосунків або історія видалених: використовуйте API.