В статье рассмотрен пример создания парсера для магазина приложений от Google. Не так давно, на форуме A-Parser, один из пользователей задал вопрос, который касался парсинга магазина приложений от Google. Пользователь столкнулся с проблемой, которая заключалась в том, что стандартным способом у него не получалось собрать ссылки на расширения, так как сайт не отдавал нужный контент.
Проанализировав вопрос пользователи и ознакомившись с ресурсом, возникла идея создания парсера, который может стать примером для получения нужной информации с похожих сайтов.
Для создания парсера, проведем анализ ресурса. Перейдем по ссылке:
здесь мы видим выдачу товаров магазина по списку. Для анализа воспользуемся инструментами для разработчика которые встроен в браузере Ghrome.

Находим нужный запрос по которому данные передаются в браузер. Для того чтобы увидеть ссылку по которой эти данный приходят, переходим на вкладку "Headers".

Здесь мы видим нужную нам ссылку и метод которым нужно передавать данные.
Проанализировав ссылку, мы видим что есть возможность передавать некоторые параметры в её теле. Воспользуемся этим и будем передавать в запросе такие параметры:

На этом анализ закончен, можно переходить к написанию парсера. Для этого используем возможности A-Parser в части создания js решений.
1. Определяем параметры которые будем задавать через парсер:
2. В основном методе, создаем запрос для получения json структуры:
3. Обрабатываем ответ и через проход по массиву значений, получаем нужные нам данные. Массив с данными будет иметь следующую структуру:

4. Делаем данные доступными для вывода:
В результате получаем готовое решение, которое будет иметь следующий вид:

Важно отметить, что парсер имеет минимальный набор настроек, так как целью его создание была демонстрация обработки данных, которые приходят в "закрытом" виде. Количество настраиваемых данных и полученных результатов, можно увеличивать в зависимости от поставленных задач.
Выводы которые можно сделать после создания парсера:
Готовый парсер можно скачать здесь
Проанализировав вопрос пользователи и ознакомившись с ресурсом, возникла идея создания парсера, который может стать примером для получения нужной информации с похожих сайтов.
Для создания парсера, проведем анализ ресурса. Перейдем по ссылке:
Код:
https://chrome.google.com/webstore/search/games?_category=extensions
Находим нужный запрос по которому данные передаются в браузер. Для того чтобы увидеть ссылку по которой эти данный приходят, переходим на вкладку "Headers".
Здесь мы видим нужную нам ссылку и метод которым нужно передавать данные.
Проанализировав ссылку, мы видим что есть возможность передавать некоторые параметры в её теле. Воспользуемся этим и будем передавать в запросе такие параметры:
- количество выводимых результатов(назовем count);
- возможность задавать категорию для поиска(назовем category);
На этом анализ закончен, можно переходить к написанию парсера. Для этого используем возможности A-Parser в части создания js решений.
1. Определяем параметры которые будем задавать через парсер:
Код:
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']]]
];
Код:
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
}
});

Код:
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.
- В примере показаны базовые возможности для работы с ресурсами, контент которых приходит в "закрытом" виде.
Готовый парсер можно скачать здесь