Получение ссылок на плагины из Chrome Webstore

Получение ссылок на плагины из Chrome Webstore

В статье рассмотрен пример создания парсера для магазина приложений от Google. Не так давно, на форуме A-Parser, один из пользователей задал вопрос, который касался парсинга магазина приложений от Google. Пользователь столкнулся с проблемой, которая заключалась в том, что стандартным способом у него не получалось собрать ссылки на расширения, так как сайт не отдавал нужный контент.
Проанализировав вопрос пользователи и ознакомившись с ресурсом, возникла идея создания парсера, который может стать примером для получения нужной информации с похожих сайтов.
Для создания парсера, проведем анализ ресурса. Перейдем по ссылке:
Код:
https://chrome.google.com/webstore/search/games?_category=extensions
здесь мы видим выдачу товаров магазина по списку. Для анализа воспользуемся инструментами для разработчика которые встроен в браузере Ghrome.
google1.png
Находим нужный запрос по которому данные передаются в браузер. Для того чтобы увидеть ссылку по которой эти данный приходят, переходим на вкладку "Headers".
google2.png
Здесь мы видим нужную нам ссылку и метод которым нужно передавать данные.
Проанализировав ссылку, мы видим что есть возможность передавать некоторые параметры в её теле. Воспользуемся этим и будем передавать в запросе такие параметры:
  • количество выводимых результатов(назовем count);
  • возможность задавать категорию для поиска(назовем category);
Ответ нам будет приходить в формате json. Единственный недостаток в том, что json структура будет иметь невалидные символы вначале, которые мы в процессе создания парсера уберем.
google3.png
На этом анализ закончен, можно переходить к написанию парсера. Для этого используем возможности 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']]]
        ];
2. В основном методе, создаем запрос для получения json структуры:
Код:
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
            }
        });
3. Обрабатываем ответ и через проход по массиву значений, получаем нужные нам данные. Массив с данными будет иметь следующую структуру:
google4.png
Код:
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]);
            }
4. Делаем данные доступными для вывода:
Код:
results: {
               arrays: {
                   serp: ['Serp list', [['link', 'Линки'], ['name', 'Название расширения'], ['site', 'Адрес сайта'], ['rate', 'Рейтинг'], ['vote', 'Количество отзывов'], ['description', 'Описание расширения']]]
                      }
               },
            results_format: "$serp.format('$link\\n')",
В результате получаем готовое решение, которое будет иметь следующий вид:
google5.png
Важно отметить, что парсер имеет минимальный набор настроек, так как целью его создание была демонстрация обработки данных, которые приходят в "закрытом" виде. Количество настраиваемых данных и полученных результатов, можно увеличивать в зависимости от поставленных задач.
Выводы которые можно сделать после создания парсера:
  1. Есть веб ресурсы, которые передают контент в "закрытом" виде. Для их обработки недостаточно указывать адрес ресурса в запросе.
  2. Для правильного составления запроса, необходимо подробно изучить структуру данных, которые приходят в ответ.
  3. Парсер показывает пример обработки данных, которые приходят в формате json.
  4. В примере показаны базовые возможности для работы с ресурсами, контент которых приходит в "закрытом" виде.
Итог. Проанализировав и протестировав созданный в процессе работы парсер, можно сделать вывод, что он полностью решает задачу которая была поставлена пользователем. На примере работы парсера, было продемонстрировано, как можно получать и обрабатывать данные, когда они приходят в формате json. Пример будет полезным для пользователей, которые сталкиваются с проблемой получения контента, при указание в качестве запроса адреса ресурса.

Готовый парсер можно скачать здесь
Автор
Support Юра
Просмотры
10
Первый выпуск
Обновление

Рейтинги

0,00 звёзд Оценок: 0

Ещё ресурсы от Support Юра

Назад
Верх