Posted in

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

Php парсер с гугл плей маркет. Парсим версию, и другие данные.
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://normail.biz/' . $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 рублей.

6 thoughts on “Как спарсить play market на php

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

    1. эм, куда передать? 🙂
      мы их парсим – это и есть “передача”.

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *