Комментарии 60
>> На данный момент точное число приложений не известно, но судя по тенденции, оно не более 50 тысяч.<<
По официальным данным на 600 тысяч больше
По официальным данным на 600 тысяч больше
Самое большое можно смело менять как минимум на Batman: Dark Knight Rises: 1.8G
К сожалению до него парсер еще не дошел, весит в списке заданий.
Bard's Tale под тегру весит 3+ гига.
Но для него ассеты выкачиваются после установки самого приложения, так что не знаю, насколько честно так судить.
Тогда это не приложение, а ресурсы. Статистика идет по обьему указанному в маркете.
Очень хотелось бы конечный результат узнать. Поторопились вы с постом :)
Вероятно. Просто не спал пару дней, а под конец еще и это написал. Последние несколько часов смотрю как обновляется инфа и всякие графики рисую.
Для меня это как наблюдать за процессом установки софта, думал может кто то тоже захочет..)
Для меня это как наблюдать за процессом установки софта, думал может кто то тоже захочет..)
Ну тогда обновляй почаще! Буду следить за постом. Ещё бы количество установок проверять неплохо.
А как? Гугл ради кеширования не дает точного числа. Ваши идеи?
Сохранять range-ы, да и всё. Потом дать статистику, мол, 1k-5k столько-то приложений, 1m-5m — столько-то.
P.S.: «андроид».
P.S.: «андроид».
Готово, пока запоминаю строкой, позже переведу в индексы.
Пропущенные приложения обновлять не буду — хочу быстрее увидеть масштабы, но боюсь быть забаненым гуглом.
Пропущенные приложения обновлять не буду — хочу быстрее увидеть масштабы, но боюсь быть забаненым гуглом.
С вашей подачи решил еще запоминать рейтинг, цену и производителя.
Можно будет потом отсортировать страницы по рейтингу, найти самого богатого производителя, общую сумму потраченную населением земного шара на приложения.
И самое прикольное для меня — прибыль с одного скачанного мегабайта, для гугл.
Можно будет потом отсортировать страницы по рейтингу, найти самого богатого производителя, общую сумму потраченную населением земного шара на приложения.
И самое прикольное для меня — прибыль с одного скачанного мегабайта, для гугл.
Готово. 160982
Еще интересная цифра:
Все найденные приложения(18500) занимают чуть больше 70G
Все найденные приложения(18500) занимают чуть больше 70G
Я тоже парсил этот каталог, мы нашли не более 200 тыс. приложений. Но у нас метода была не очень эффективная, наверняка кто-нибудь придумал как всё спарсить.
А про техническую часть расскажете? Используете ли прокси?
Про техническую? Хм…
Запросы идут посредством fopen и stream_context_create
Регекспы подбирались в реалтайм парсере: Regex Builder
Как устроена база данных? Для дела используется три таблицы: task(id, name), founded(id, name), data(id, name, updated_time, found_time, recheck_time, size, email, downloads). Как делать SQL запросы надеюсь пояснять не нужно.
В остальном все вроде понятно…
Прокси не использую, парсер скачивает в режиме 10 запросов, отдых секунда. Под нагрузкой хабра на все добро стало тратиться порядка 9 секунд, это значит что средняя скорость 1 запрос в секунду.
Запросы идут посредством fopen и stream_context_create
Регекспы подбирались в реалтайм парсере: Regex Builder
Как устроена база данных? Для дела используется три таблицы: task(id, name), founded(id, name), data(id, name, updated_time, found_time, recheck_time, size, email, downloads). Как делать SQL запросы надеюсь пояснять не нужно.
В остальном все вроде понятно…
Прокси не использую, парсер скачивает в режиме 10 запросов, отдых секунда. Под нагрузкой хабра на все добро стало тратиться порядка 9 секунд, это значит что средняя скорость 1 запрос в секунду.
Ах, да, еще. Нет смысла делать скачивание в несколько потоков, так как мой VPS имеет всего 400MHz, и больше всего времени тратится на поиск регекспов. Можно конечно прооптимизировать, и искать вручную, но меня пока все устраивает: порядка 80.000 приложений в день.
Как вы выбирали начальную точку откуда начинать парсить и каков порядок обхода всех приложений?
Посмотрел скачанные у меня приложения, и субьективно решил какое из них лучше всего. Какого разработчика я больше всего уважаю.
Порядок прямой — если приложение еще не было найдено, добавить задание. Обработка по очереди.
Информация берется в том порядке что записана на странице, т.е сначала обработаются все приложения разработчика, потом похожие. Вроде не напутал.
Порядок прямой — если приложение еще не было найдено, добавить задание. Обработка по очереди.
Информация берется в том порядке что записана на странице, т.е сначала обработаются все приложения разработчика, потом похожие. Вроде не напутал.
Что-то мне всё равно непонятно.
И как таким способом можно обойти все приложения в Google Play, чтобы никого не забыть?
И как таким способом можно обойти все приложения в Google Play, чтобы никого не забыть?
НЛО прилетело и опубликовало эту надпись здесь
^, Правда гарантий что никого не забудем нет. Просто если приложение не найти ни в основном каталоге, ни в похожих, то его честно можно опустить, так как пользователи не найдут тоже.
А можно про алгоритм поиска в основном каталоге поподробнее?
Есть несколько категорий, для каждой есть понятие страницы.
Спасибо за исчерпывающий ответ!
Простите, думал это очевидно. К тому же я был с телефона… Спешу исправиться!
В google play есть несколько категорий. Одна из них
В них есть под категории, они нас и интересуют. К примеру казуальные.
В нем есть два раздела(как и везде): платные и бесплатные.
Посмотрим как меняется адрес при смене страницы:
Вторая: https://blabla/topselling_free?start=24&num=24
Третья https://blabla/topselling_free?start=48&num=24
Заметим так же, что на странице всего 3 столбца и 8 строк(всего 24). Логично предположить что числа 24 и 48 — порядковые номера первого приложения(начиная с нуля).
Давайте попробуем поставить 20, действительно, четвертое приложение совпадает с 24 на второй странице.
Надеюсь теперь стало понятно, иначе я готов обьяснить еще подробнее. Простите если перешел на совсем просто язык, я не знаю в каком моменте вам становится непонятно, решил подстраховаться. В будущем пожалуйста задавайте наводящие вопросы.
P.S как оказалось num ни на что не влияет.
В google play есть несколько категорий. Одна из них
В них есть под категории, они нас и интересуют. К примеру казуальные.
В нем есть два раздела(как и везде): платные и бесплатные.
Посмотрим как меняется адрес при смене страницы:
Вторая: https://blabla/topselling_free?start=24&num=24
Третья https://blabla/topselling_free?start=48&num=24
Заметим так же, что на странице всего 3 столбца и 8 строк(всего 24). Логично предположить что числа 24 и 48 — порядковые номера первого приложения(начиная с нуля).
Давайте попробуем поставить 20, действительно, четвертое приложение совпадает с 24 на второй странице.
Надеюсь теперь стало понятно, иначе я готов обьяснить еще подробнее. Простите если перешел на совсем просто язык, я не знаю в каком моменте вам становится непонятно, решил подстраховаться. В будущем пожалуйста задавайте наводящие вопросы.
P.S как оказалось num ни на что не влияет.
А ничего незнаете про бан гугла парсеров? Сколько разрешает запросов делать и т.п.?
А вы вкурсе, что есть аппликации доступные только для определенной страны? Я просто хочу сказать, что возможно ваша конечная статистика будет не полной.
Самое маленькое приложение 1.002kb? У вас парсер неверно настроен, там запятая для отделения тысячного разряда используется на самом деле. Так что ваше «самое маленькое приложение» весит 1002kb. И на маркете куча приложений полегче этого будет.
Писал в свое время парсер Google Play на python с использованием grab (http://grablib.org)
P.S. Регулярки для разбора HTML — зло, и это не раз обсуждалось
P.S. Регулярки для разбора HTML — зло, и это не раз обсуждалось
А гугл не должен метать молнии с целью поражения?
www.google.com/mobile/android/market-tos.html
Поосторожнее с такими экспериментами.
3.3 You agree not to access (or attempt to access) Google Play by any means other than through the interface that is provided by Google, unless you have been specifically allowed to do so in a separate agreement with Google. You specifically agree not to access (or attempt to access) Google Play through any automated means (including use of scripts, crawlers, or similar technologies) and shall ensure that you comply with the instructions set out in any robots.txt file present on the Google Play website.
Поосторожнее с такими экспериментами.
Могу отвечать только раз в час, поэтому сразу несколько ответов в одном посте.
> Я тоже парсил этот каталог, мы нашли не более 200 тыс. приложений. Но у нас метода была не очень эффективная, наверняка кто-нибудь придумал как всё спарсить.
Подсказываю по поиску всех приложений. Там есть поиск. Перебираются все сочетания буквенные и цифровые, A, AA, AB и т.д., выдача поиска содержит ограниченное число приложений. Все парсим, получаем кучу market_id для приложений, парсим страницы приложений. Я набирал что-то около 400+ тысяч.
> Ах, да, еще. Нет смысла делать скачивание в несколько потоков, так как мой VPS имеет всего 400MHz, и больше всего времени тратится…
Смысл есть. Почитайте статьи по grab на том же хабре. Ну и про регекспы для парсинга уже было сказано. Используйте xpath, cssselect или что-то подобное, работающее с dom. Будет надежней и в разы быстрей.
> Я тоже парсил этот каталог, мы нашли не более 200 тыс. приложений. Но у нас метода была не очень эффективная, наверняка кто-нибудь придумал как всё спарсить.
Подсказываю по поиску всех приложений. Там есть поиск. Перебираются все сочетания буквенные и цифровые, A, AA, AB и т.д., выдача поиска содержит ограниченное число приложений. Все парсим, получаем кучу market_id для приложений, парсим страницы приложений. Я набирал что-то около 400+ тысяч.
> Ах, да, еще. Нет смысла делать скачивание в несколько потоков, так как мой VPS имеет всего 400MHz, и больше всего времени тратится…
Смысл есть. Почитайте статьи по grab на том же хабре. Ну и про регекспы для парсинга уже было сказано. Используйте xpath, cssselect или что-то подобное, работающее с dom. Будет надежней и в разы быстрей.
Жалко, что это огромное количество никак не отражает качество… Регулярно просматриваю на досуге маркет, в поисках занимательных игрушек или интересных приложений каких-нибудь, и очень редко нахожу что-то стОящее. В основном, треш и наколенные поделки, а то и вредоносные приложения… В разделе платных программ ситуация, конечно, получше, но цены иногда отпугивают :)
Я просматриваю еженедельный дайджест новых игр на 4pda.
Читаю краткое описание, отзывы, обычно есть и ссылки на геймплей в youtube.
Читаю краткое описание, отзывы, обычно есть и ссылки на геймплей в youtube.
Число приложений больше не обновляется (видимо спарсил): итог 57 992. Что-то мне подсказывает, что приложений больше (в том числе, как уже писали выше, из-за недоступности в разных странах).
Тоже как то парсил Google Play для американского рынка, Набросал на C# консольное приложение страницу парсил используя HtmlAgilityPack (XPATH), правда делал не поиск по AAA AAB и т.п, а сначала выбирал все с главной из категорий, потом со страницы приложения переход на все страницы компании, потом на все related и так по кругу. Эффективная выборка шла не больше 8 часов, (на Ноутбуке с 1,6GHz), дальше пошли повторения которые отсекались и особого прироста не было, поэтому остановил. итог: ~32К
Парсер не интересно. Если хочется еще не поспать — попробуйте написать качалку приложений из GP. Не с андроида и не с эмулятора ;)
В ходе ошибки было пропущено сохранение 43084 приложений, сейчас они все добавлены в очередь заданий.
<guru_mode>
Спешил, прооптимизировал запрос и убежал, толком не проверив. А он дал сбой по foreign key. Сейчас вьюхой все исправил.
</guru_mode>
<guru_mode>
Спешил, прооптимизировал запрос и убежал, толком не проверив. А он дал сбой по foreign key. Сейчас вьюхой все исправил.
</guru_mode>
Есть же app annie например
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как я парсил Google Play