JavaScript парсеры: расширенный функционал A-Parser

Forbidden

Administrator
Команда форума
A-Parser Enterprise
Документация перенесена в Вики: https://a-parser.com/wiki/js-parsers/

Примеры

Парсинг HTML тега title на произвольной странице
Получение подсказок по запросу, затем сбор первой ссылки с Google по каждой подсказке
Авторизация и парсинг MOZ.com
Определение языка страницы через Яндекс Переводчик
Парсинг текстовки по ключу одним заданием
Парсинг Mail.Ru с возможностью использовать антигейт

TODO:

  • Улучшения редактора(создание файлов, подсветка не сохраненных изменений)
  • Работа с файлами и аккаунтами из парсеров(для файлов использовать node-like api)
  • Экспорт\импорт парсеров

Вступайте в Skype чат для разработчиков JS парсеров: https://join.skype.com/nMAYI9lpsJ9Z
Первый пост будет постоянно обновляться, в комментах предлагаю вести обсуждение.
Также оставляйте свои идеи для примеров, лучшие будут реализованы и выложены здесь.
 
Последнее редактирование модератором:
  • Добавлен пример парсинга Moz.com с авторизацией, парсер сделан на основе этого пресета
  • Добавлены описания мьютексов, работы с куками, и sleep
  • Начиная с версии 1.1.712 query заменять на хэш set который содержит все элементы запроса(запрос, первый запрос, уровень, дополнительные поля и т.п.), для доступа к запросу в текстовом виде теперь необходимо использовать set.query
 
Всем добрый день!
Закралась идея, но я в js не соображаю, но понимаю что теперь с помощью JavaScript парсера можно сделать копирку сайтов (html, картинки, css и т.д.) с полной структурой сайта. Если Forbidden или кто другой сделает, скиньте плиз персет.
 
  • Добавлен пример №4, определяющий язык страницы через Яндекс Переводчик
 
  • Добавлен пример №5: Парсинг текстовки по ключу одним заданием
 
Здравствуйте
Добавьте пример работы с NET::HTTP (с получение 3-5 каких-то данных) и работой с антигейтом
Спасибо!
 
Вопрос.
А работает секция headers: {'cookie': 'param'} когда используется cookies.getAll и cookies.setAll (пример с авторизацией)?
Мне в куку надо добавить доп параметр помимо авторизации (после авторизации).

У меня не получилось это вместе использовать.

И как посмотреть что в headers отправляться с запросом?
 
Добавлен метод установки одиночного cookie: this.cookie.set(host, path, name, value), пример:
Код:
this.cookies.set('ya.ru', '/', 'param', 42);
 
Обновил версию, но не получилось использовать this.cookies.set
Зачем нужен параметр path? Они с каждым запросом меняются, как их подставлять?
Мне просто в куку надо добавить параметры для любых запросов с любыми url.

Еще раз вопрос.
Для дебага как мне посмотреть что в headers отправляться с запросом? Какие куки? и др.
 
Зачем нужен параметр path? Они с каждым запросом меняются, как их подставлять?
затем что куки зависят как от домена так и от пути, если на весь домен то просто надо использовать '/'

Для дебага как мне посмотреть что в headers отправляться с запросом? Какие куки? и др.
в тестовом парсинге иконка с шестеренкой
 
Спасибо, за подсказку с шестеренкой и быстрый ответ. Но вопрос по кукам открытый.
У меня парсер на основе примера с авторизацией, на основе MOZ т.е. cookies.getAll и cookies.setAll

Доп устанавливаю this.cookies.set, но то что я устанавливаю не передается!!!

вот мой код (кусок)

this.cookies.set('ya.ru', '/', 'count', 100);

let response = yield this.request('GET', set.query, {
}, {
decode: 'auto-html',
});


В ответе в куках только сид авторизации Cookie: SID=kaiufgjjpj8pl3rhb3jg6ddb03
а моего нового параметра нет

Возможно я что то делаю не так! Извините.
 
а домен то какой? ya.ru необходимо поменять на нужный домен
 
Нет не такой. Сейчас скину на почту весь пример парсера.
 
С версии 1.1.767 добавлены методы для работы с прокси:
  • this.proxy.next() - сменить прокси, старый прокси больше не будет использован для текущего запроса
  • this.proxy.ban() - сменить и забанить прокси(необходимо использовать когда сервис блокирует работу по IP)
  • this.proxy.get() - получить текущий прокси(последний прокси с которым был сделан запрос)
  • this.proxy.set('http://127.0.0.1:8080', noChange = false) - установить прокси для следующего запроса, параметр noChange необязательный, если задан true то прокси не будет меняться между попытками
 
С версии 1.1.769 для this.request добавлен параметр attempt, который указывает на текущую попытку, при этом встроенный обработчик попыток игнорируется, пример:
Код:
yield this.request('GET', 'http://domain.com/', {}, {attempt: 3}); // в логе отобразится что текущий запрос - 3яя попытка
 
Назад
Верх