В статье рассмотрен пример создания парсера для магазина приложений от Google. Не так давно, на форуме A-Parser, один из пользователей задал вопрос, который касался парсинга магазина приложений от Google. Пользователь столкнулся с проблемой, которая заключалась в том, что стандартным способом у него не получалось собрать ссылки на расширения, так как сайт не отдавал нужный контент.
Проанализировав вопрос пользователи и ознакомившись с ресурсом, возникла идея создания парсера, который может стать примером для получения нужной информации с похожих сайтов.
Для создания парсера, проведем анализ ресурса. Перейдем по ссылке:
здесь мы видим выдачу товаров магазина по списку. Для анализа воспользуемся инструментами для разработчика которые встроен в браузере Ghrome.Код:https://chrome.google.com/webstore/search/games?_category=extensions
Находим нужный запрос по которому данные передаются в браузер. Для того чтобы увидеть ссылку по которой эти данный приходят, переходим на вкладку "Headers".
Здесь мы видим нужную нам ссылку и метод которым нужно передавать данные.
Проанализировав ссылку, мы видим что есть возможность передавать некоторые параметры в её теле. Воспользуемся этим и будем передавать в запросе такие параметры:
Ответ нам будет приходить в формате json. Единственный недостаток в том, что json структура будет иметь невалидные символы вначале, которые мы в процессе создания парсера уберем.
- количество выводимых результатов(назовем count);
- возможность задавать категорию для поиска(назовем category);
На этом анализ закончен, можно переходить к написанию парсера. Для этого используем возможности A-Parser в части создания js решений.
1. Определяем параметры которые будем задавать через парсер:
2. В основном методе, создаем запрос для получения json структуры:Код:this.editableConf = [ ['count', ['combobox', 'Count', ['10', '10'], ['20', '20'], ['30', '30'], ['40', '40'], ['50', '50'], ['100', '100']]], ['category', ['combobox', 'Category', ['extensions', 'Extensions'], ['themes', 'Themes'], ['apps', 'Apps'], ['app/3-games', 'Games']]] ];
3. Обрабатываем ответ и через проход по массиву значений, получаем нужные нам данные. Массив с данными будет иметь следующую структуру:Код:let response = yield this.request('POST', 'https://chrome.google.com/webstore/ajax/item?hl=en-US&gl=PE&pv=20170811&mce=atf,pii,rtr,rlb,gtc,hcn,svp,wtd,nrp,hap,c3d,ncr,ctm,ac,hot,mac,fcf,rma&count=' + this.conf.count + '&category=' + this.conf.category + '&searchTerm=' + set.query + '&sortBy=0&container=CHROME&rt=j', {}, { decode: 'utf8', headers: { 'content-length': 0 } });
4. Делаем данные доступными для вывода:Код:let jsondata = JSON.parse(response.data.replace(/^\)\]\}'\s*/, '')); results.serp = []; var a = jsondata[0][1][1]; for (var i = 0; i < a.length; i++) { let element = a; results.serp.push(element[37], element[1], element[81], element[12], element[22], element[6]); }
В результате получаем готовое решение, которое будет иметь следующий вид:Код:results: { arrays: { serp: ['Serp list', [['link', 'Линки'], ['name', 'Название расширения'], ['site', 'Адрес сайта'], ['rate', 'Рейтинг'], ['vote', 'Количество отзывов'], ['description', 'Описание расширения']]] } }, results_format: "$serp.format('$link\\n')",
Важно отметить, что парсер имеет минимальный набор настроек, так как целью его создание была демонстрация обработки данных, которые приходят в "закрытом" виде. Количество настраиваемых данных и полученных результатов, можно увеличивать в зависимости от поставленных задач.
Выводы которые можно сделать после создания парсера:
Итог. Проанализировав и протестировав созданный в процессе работы парсер, можно сделать вывод, что он полностью решает задачу которая была поставлена пользователем. На примере работы парсера, было продемонстрировано, как можно получать и обрабатывать данные, когда они приходят в формате json. Пример будет полезным для пользователей, которые сталкиваются с проблемой получения контента, при указание в качестве запроса адреса ресурса.
- Есть веб ресурсы, которые передают контент в "закрытом" виде. Для их обработки недостаточно указывать адрес ресурса в запросе.
- Для правильного составления запроса, необходимо подробно изучить структуру данных, которые приходят в ответ.
- Парсер показывает пример обработки данных, которые приходят в формате json.
- В примере показаны базовые возможности для работы с ресурсами, контент которых приходит в "закрытом" виде.
Готовый парсер можно скачать здесь
-
Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!Скрыть объявление
Получение ссылок на плагины из Chrome Webstore
Пример парсера для магазина приложений Google
Метки: