Categories: Php

Как спарсить play market на php

Выложу простой код, который на примере «Текущей версии» парсит страницу приложения в play market.

Все работает с использованием file_get_contents. Для одного сайта делал парсер, и если текущая версия отличалась от той, что в маркете — записывалось в текстовый файл. Кроме того, пользователи могли нажать кнопку «Сверить версии«, и дополнительно уведомить админа об обновлениях (если они есть).

Потом админ обновлял приложения у себя на сайте.

Я выложу полный код с комментариями:

<?php
 $packname = $_POST['packagename']; // Имя пакета приложения, com.whatsapp
 $version = $_POST['version']; // Текущая версия приложения; у нас оно хранилось на сайте
 $curr_page = $_POST['curr_page']; // Текущая страница сайта; нужно для уведомлений с какой страницы заявка
 if (!empty($packname)) {
  $url = 'https://play.google.com/store/apps/details?id='.$packname; // Адрес приложения, с подставкой имени пакета
  //$url = 'https://play.google.com/store/apps/details?id=com.whatsapp'; // Пример ссылки, закомментировано
  $html = file_get_contents($url); // Парсим страницу, в переменную
  $first_step = explode( 'Current Version</div><span class="htlgb"><div class="IQ1z0d"><span class="htlgb">' , $html ); // Извлекаем версию. Обратите внимание на классы
  foreach ($first_step as $key => $value) { // Разбор спарсенного массива
    if($key > 0)
    {
      $second_step = explode("</span></div>" , $value );
      if (strpos($second_step[0], 'Varies with device') !== false) { // Если пишет не версию, а "Зависит от устройства", тогда выводим пользователю:
       echo "Нам не удалось определить версию этого приложения на Google Play, возможно версия приложения зависит от устройства, поэтому мы проверили дату обновления. Новая версия на Google Play еще не выходила.";
      }
      else {
       echo 'Версия на Google Play: ' . str_replace(PHP_EOL, '', $second_step[0]); // Выводим версию с плей маркета
       echo '<br>Версия на сайте: ' . $version .'<br>';
       if ($second_step[0] == $version){
        echo 'Обновлять приложение нет необходимости'; // Если одинаковые - то ничего не делаем, просто уведомляем
       } 
       else { 
        echo 'Мы приняли вашу заявку.'; // Если отличаются, записываем данные в файл .txt
        $content2file = date("d-m-Y H:i:s") . ': https://bdseo.ru' . $curr_page . ' - ' . $second_step[0].PHP_EOL; // Пишем время, страницу с которой вызвали "Сверить версию", и актуальную версию
        $file = './version_market.txt';
     $temp = file_get_contents($file);
     $content = $content2file.$temp;
        file_put_contents($file, $content); // Temp делал для того, чтобы новые строки были в начале файла.
       }
      }
    }
  }
 } else echo 'Нам не удалось определить версию этого приложения на Google Play, возможно приложение не найдено. Мы приняли вашу заявку.';
?>

Описал в комментариях. Еще у нас были привязаны уведомления в телеграмм. Основное оставил. По сути, все сокращается до

$html = file_get_contents($url);

И правильно распарсить строку с версией.

Поменялся html-код страницы play.google.com, что делать

За последние пару месяцев код не менялся, но не исключено. Зайдите в исходный код, посмотрите актуальные классы.

Защита от запросов

Есть ли капча? Не знаю, у нас не было никаких проблем. Возможно, при большом количестве запросов с одного айпи может быть рекапча или еще что-то. Пользуемся в таком случае прокси.

Английская или русская версия

Все зависит откуда парсите, месторасположение сервера (прокси). У нас страница по умолчанию была на английском, поэтому и «Current Version, Varies with device». Можно добавить в адрес url язык, но нам это не нужно было.

Если нужно спарсить другие данные (дата публикации, информация о разработчике, эмейл разработчика), заново вызывать file_get_contents не нужно, страница уже в переменной $html.

Помощь с парсером

Нужна помощь — без проблем. Пишите. Но только если Вы делаете и Вам нужен совет.

Если вы хотите чтобы я сделал парсер, написал код — делаю за деньги, цена от 5000 рублей.

veniamin

View Comments

  • Гугл плей сменил дизайн и теперь версия есть только во всплывающем окне, которого по умолчанию в коде нет(( Можно что-то с этим сделать?

    • Версию лучше тащить доп запросом, на некоторых страницах она есть в коде.

    • Уже знаю, переписывать код. По поводу всплывающего - нужно смотреть как сделано, возможно простой аякс-запрос.

  • Можно еще простой пример как передать эти все параметры со страницы? Очень сильно выручите! Спасибо!

    • эм, куда передать? :-)
      мы их парсим - это и есть "передача".

Recent Posts

Бонус 100 USDT +10 BUSD от Binance

Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…

2 года ago

Как парсить длительность видео youtube на php в привычном виде

Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…

2 года ago

Как удалить чужую сессию пользователя в ubuntu (linux)

Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…

2 года ago

Как наложить watermark на видео в python windows массово

Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…

3 года ago

Kwork.ru: опыт поиска исполнителя и поздравление

Пришла в голову одна интересная идея. Связанно с тиктоком. Решил поискать исполнителя, который будет монтировать…

3 года ago

Отзыв о Накрутке подписчиков instagram через Socpublic в автоматическом режиме

Решил проверить "автоматическую" накрутку подписчиков в инстаграмме через сервис активной рекламы Socpublic.com. Сразу скажу -…

3 года ago