Выложу простой код, который на примере «Текущей версии» парсит страницу приложения в play market.
Все работает с использованием file_get_contents. Для одного сайта делал парсер, и если текущая версия отличалась от той, что в маркете — записывалось в текстовый файл. Кроме того, пользователи могли нажать кнопку «Сверить версии«, и дополнительно уведомить админа об обновлениях (если они есть).
Потом админ обновлял приложения у себя на сайте.
Я выложу полный код с комментариями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?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, возможно приложение не найдено. Мы приняли вашу заявку.'; ?> |
Описал в комментариях. Еще у нас были привязаны уведомления в телеграмм. Основное оставил. По сути, все сокращается до
1 | $html = file_get_contents($url); |
И правильно распарсить строку с версией.
Поменялся html-код страницы play.google.com, что делать
За последние пару месяцев код не менялся, но не исключено. Зайдите в исходный код, посмотрите актуальные классы.
Защита от запросов
Есть ли капча? Не знаю, у нас не было никаких проблем. Возможно, при большом количестве запросов с одного айпи может быть рекапча или еще что-то. Пользуемся в таком случае прокси.
Английская или русская версия
Все зависит откуда парсите, месторасположение сервера (прокси). У нас страница по умолчанию была на английском, поэтому и «Current Version, Varies with device». Можно добавить в адрес url язык, но нам это не нужно было.
Если нужно спарсить другие данные (дата публикации, информация о разработчике, эмейл разработчика), заново вызывать file_get_contents не нужно, страница уже в переменной $html.
Помощь с парсером
Нужна помощь — без проблем. Пишите. Но только если Вы делаете и Вам нужен совет.
Если вы хотите чтобы я сделал парсер, написал код — делаю за деньги, цена от 5000 рублей.
Гугл плей сменил дизайн и теперь версия есть только во всплывающем окне, которого по умолчанию в коде нет(( Можно что-то с этим сделать?
Уже знаю, переписывать код. По поводу всплывающего — нужно смотреть как сделано, возможно простой аякс-запрос.
Версию лучше тащить доп запросом, на некоторых страницах она есть в коде.
Можно еще простой пример как передать эти все параметры со страницы? Очень сильно выручите! Спасибо!
эм, куда передать? :-)
мы их парсим — это и есть «передача».
Спасибо за советы=)