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

Тема в разделе "Техническая поддержка", создана пользователем Forbidden, 11 дек 2016.

  1. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    Документация перенесена в Вики: 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
    Первый пост будет постоянно обновляться, в комментах предлагаю вести обсуждение.
    Также оставляйте свои идеи для примеров, лучшие будут реализованы и выложены здесь.
     
    #1 Forbidden, 11 дек 2016
    Последнее редактирование модератором: 25 апр 2017
    btr, kaznokrad, Invest_it и 9 другим нравится это.
  2. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    • Добавлен пример парсинга Moz.com с авторизацией, парсер сделан на основе этого пресета
    • Добавлены описания мьютексов, работы с куками, и sleep
    • Начиная с версии 1.1.712 query заменять на хэш set который содержит все элементы запроса(запрос, первый запрос, уровень, дополнительные поля и т.п.), для доступа к запросу в текстовом виде теперь необходимо использовать set.query
     
    LmPopo и relay нравится это.
  3. evova

    evova A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 сен 2012
    Сообщения:
    28
    Симпатии:
    14
    Всем добрый день!
    Закралась идея, но я в js не соображаю, но понимаю что теперь с помощью JavaScript парсера можно сделать копирку сайтов (html, картинки, css и т.д.) с полной структурой сайта. Если Forbidden или кто другой сделает, скиньте плиз персет.
     
    Forbidden нравится это.
  4. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    1.491
    Симпатии:
    1.164
    • Добавлен пример №4, определяющий язык страницы через Яндекс Переводчик
     
    Syrex и relay нравится это.
  5. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    с версии 1.1.737 добавлен this.query.add
     
    Support нравится это.
  6. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    1.491
    Симпатии:
    1.164
    • Добавлен пример №5: Парсинг текстовки по ключу одним заданием
     
  7. Kreola

    Kreola Member

    Регистрация:
    23 июн 2013
    Сообщения:
    175
    Симпатии:
    13
    Здравствуйте
    Добавьте пример работы с NET::HTTP (с получение 3-5 каких-то данных) и работой с антигейтом
    Спасибо!
     
  8. evova

    evova A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 сен 2012
    Сообщения:
    28
    Симпатии:
    14
    Вопрос.
    А работает секция headers: {'cookie': 'param'} когда используется cookies.getAll и cookies.setAll (пример с авторизацией)?
    Мне в куку надо добавить доп параметр помимо авторизации (после авторизации).

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

    И как посмотреть что в headers отправляться с запросом?
     
    Forbidden нравится это.
  9. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    Сегодня будет обновление и пример
     
    evova и relay нравится это.
  10. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    Добавлен метод установки одиночного cookie: this.cookie.set(host, path, name, value), пример:
    Код:
    this.cookies.set('ya.ru', '/', 'param', 42);
     
  11. evova

    evova A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 сен 2012
    Сообщения:
    28
    Симпатии:
    14
    Обновил версию, но не получилось использовать this.cookies.set
    Зачем нужен параметр path? Они с каждым запросом меняются, как их подставлять?
    Мне просто в куку надо добавить параметры для любых запросов с любыми url.

    Еще раз вопрос.
    Для дебага как мне посмотреть что в headers отправляться с запросом? Какие куки? и др.
     
  12. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    затем что куки зависят как от домена так и от пути, если на весь домен то просто надо использовать '/'

    в тестовом парсинге иконка с шестеренкой
     
  13. evova

    evova A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 сен 2012
    Сообщения:
    28
    Симпатии:
    14
    Спасибо, за подсказку с шестеренкой и быстрый ответ. Но вопрос по кукам открытый.
    У меня парсер на основе примера с авторизацией, на основе 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
    а моего нового параметра нет

    Возможно я что то делаю не так! Извините.
     
  14. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    а домен то какой? ya.ru необходимо поменять на нужный домен
     
  15. evova

    evova A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 сен 2012
    Сообщения:
    28
    Симпатии:
    14
    Нет не такой. Сейчас скину на почту весь пример парсера.
     
  16. evova

    evova A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    28 сен 2012
    Сообщения:
    28
    Симпатии:
    14
    Спасибо, смотрю в книгу вижу фигу. Все работает!
     
    Support и Forbidden нравится это.
  17. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    1.491
    Симпатии:
    1.164
  18. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    С версии 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 то прокси не будет меняться между попытками
     
    evova и Support нравится это.
  19. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    2.953
    Симпатии:
    1.545
    С версии 1.1.769 для this.request добавлен параметр attempt, который указывает на текущую попытку, при этом встроенный обработчик попыток игнорируется, пример:
    Код:
    yield this.request('GET', 'http://domain.com/', {}, {attempt: 3}); // в логе отобразится что текущий запрос - 3яя попытка
     
    Support и evova нравится это.
  20. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    1.491
    Симпатии:
    1.164
    • Добавлен пример парсинга Mail.Ru с возможностью использовать антигейт
     
    vipuncle, seowin555, Forbidden и ещё 1-му нравится это.

Поделиться этой страницей