LINUX.ORG.RU

HTML-парсинг андроид-маркета


0

1

Понадобилось парсить андроид-маркет.
Думаю, это будет скрипт на Perl'е.
Вопросы"

1. Гугл, как всегда, обфусцировал сырцы - там все в 1 строку. Как разбить строку и найти нужную инфу?
2. Гугл как-то отслеживает запросы? Если раз в день делать, то не забанят?

В частности, интересуют позиции игр в top-рейтингах. Например, позиция Angry Birds - такая-то.
Название игры == название пакета.
Позиция игры - <div class=«ordinal-value»>6</div>

Спасибо!

★★★★★
 echo "<div>3</div><a ><p>4</p>" | sed -E 's|</([^>]+)>|</\1>\n|ig' 

например
или методом исключения (отрезания лишнего) можно оставить нужные данные

anTaRes ★★★★
()
Ответ на: комментарий от xtraeft

гугл впринципе почти не банит, только запросы надо на части бить
я практически весь маркет выпарсил когда тестил

xtraeft ★★☆☆
()
Ответ на: комментарий от anTaRes

Ухты, спасибо за эту команду!
Еще вопрос: как теперь в output'е найти блок с angry birds, а потом в нем найти значение тега <div class=«ordinal-value»></div> ?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik
$ GET https://market.android.com/details?id=apps_topselling_paid | sed -E 's|</([^>]+)>|</\1>\n|ig' | grep 'class="title"' | sed 's/.*title="//' | sed 's/" .*//'

примерно так вообще можно по порядку получить список

anTaRes ★★★★
()
Ответ на: комментарий от anTaRes

Огромное спасибо! А если нужно получить не названия приложений, а названия пакетов (com.ea.worms_row ... )?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от xtraeft

java-реализация API была бы лучшим вариантом, но та, что по ссылке - там вроде нельзя решить данную задачу. Скриншоты можно получать, данные о конкретном приложении можно, а номер позиции в категории - не нашел примера.

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

да, я про неофициальный php api

номер позиции в категории - не нашел примера.

поковыряю на досуге, может получится

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

Ну я так понял, то php реализация - это реализация java-версии. Спасибо!

kovrik ★★★★★
() автор топика
Ответ на: комментарий от anTaRes

Что-то пока не соображу с регуляркой.

GET https://market.android.com/details?id=apps_topselling_paid | sed -E 's|</([^>]+)>|</\1>\n|ig' | grep '<li class="goog-inline-block" data-docid=' | sed 's/.*data-docid="//' | sed 's/" .*//'
Находит имя пакета. Как теперь обрезать текст после имени?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

Вот такая команда получилась:

GET https://market.android.com/details?id=apps_topselling_paid | sed -E 's|</([^>]+)>|</\1>\n|ig' | grep '<li class="goog-inline-block" data-docid=' | sed 's/.*data-docid="//' | sed 's/".*//'

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik
for i in {0..10}; do 
GET "https://market.android.com/details?id=apps_topselling_paid&start=$i&num=24" | sed -E 's|</([^>]+)>|</\1>\n|ig' | grep '<li class="goog-inline-block" data-docid=' | sed 's/.*data-docid="//' | sed 's/".*//' ;
done

так ?

anTaRes ★★★★
()
Ответ на: комментарий от kovrik

В общем, еще немного поправил скрипт, дописал, потом написал еще скрипт на перле, который парсит результат и пишет все в базу.
Всем спасибо!

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

А как объединить 2 команды - чтобы грепалось и название пакета и название приложения?

Хватит напрягать ЛОР, ленивое ты говно. Почитай уже маны.

anonymous
()
Ответ на: комментарий от kovrik
$ GET https://market.android.com/details?id=apps_topselling_paid | grep -o -E '<a ([^>]+)buy-link([^>]+)>'

ето все можно писать в файло (все страницы) ,
потом построчно отрезать <a и > , ставить ; после '" ' и тупо eval
и echo $data-docId

anTaRes ★★★★
()

Я подобное обычно через XPath-запросы парсю. Весьма компактно и понятно получается.

shutty
()
Ответ на: комментарий от shutty

А что лучше для XPath юзать?
Я css селекторами делал, Web::Query с этим неплохо справляется.

Olegymous ★★★
()

Кстати, вроде все сделал, написал скрипты и теперь могу парсить все чарты + по названию пакета могу забирать название приложения, цену, рейтинг, описание, автора, категорию и тд.

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

Кстати, вроде все сделал, написал скрипты и теперь могу парсить все чарты + по названию пакета могу забирать название приложения, цену, рейтинг, описание, автора, категорию и тд.

Мы все рады за тебя. Очень переживали.

Премьер-министром главное не становись. :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.