Вопрос по JS парсерам

  • Автор темы Автор темы worker
  • Дата начала Дата начала

worker

A-Parser Enterprise License
A-Parser Enterprise
Добрый день!
Версия a-parser - последняя beta.

1. Не выдаёт cookies после выполнения запроса. Код парсера - дефолтный:
Код:
const util = require('util');

class Parser {
    constructor() {
        this.defaultConf = {
            version: '0.1.3',
            results: {
                flat: [
                    ['title', 'HTML title'],
                ]
            },
            results_format: '$query: $title\\n',
            parsecodes: {
                200: 1,
            },
            max_size: 200 * 1024,
        };
    }

    *parse(set, results) {
        this.logger.put("Start scraping query: " + set.query);

        let response = yield this.request('GET', set.query, {}, {
            check_content: ['<\/html>'],
            decode: 'auto-html',
        });

        if(response.success) {
            let matches = response.data.match(/<title>(.*?)<\/title>/i);
            if(matches)
                results.title = matches[1];
           
            this.logger.put('Cookie:' + util.inspect(this.cookies.getAll(), false, null));
        }
       
        results.success = response.success;

        return results;
    }
}

Получаем:
Код:
27/04 19:26:33

Parser JS::test::0 parse query https://www.google.com/
27/04 19:26:33

Use proxy http://88.198.36.150:42873
27/04 19:26:34

Start scraping query: https://www.google.com/
27/04 19:26:39

GET(1): https://www.google.com/ - 200 OK (2.65 KB)
27/04 19:26:39

Cookie:{ version: 1 }
27/04 19:26:39

Thread complete work

Почему нет других кук?

2. Поясните, как работать с this.query.add.
Если у меня в задании есть конструктор запросов, то задача, что добавлена через this.query.add, идёт прямиком в JS parser, мимо конструктора запросов.
Как вот это понимать:
"Можно передавать в качестве запроса хэш с параметрами, работает аналогично опции Конструктор запросов" ?
Дайте развёрнутый пример(или ссылку на парсер, где это показано).
 
Почему нет других кук?
Выделено в задачу, это баг: https://a-parser.com/threads/6110/

Поясните, как работать с this.query.add
Данная функция позволяет добавлять в существующую очередь запросов новые запросы.
В Каталоге есть статьи и примеры с использованием данной функции, например: https://a-parser.com/resources/130/, https://a-parser.com/resources/264/
Если у меня в задании есть конструктор запросов, то задача, что добавлена через this.query.add, идёт прямиком в JS parser, мимо конструктора запросов.
Нет, Конструктор запросов не пропускается.
Как вот это понимать:
"Можно передавать в качестве запроса хэш с параметрами, работает аналогично опции Конструктор запросов" ?
Именно так и понимать, как написано).
Если вы подставляете в запросы просто строку, например:
Код:
this.query.add('test');
то при обработке данного запроса эта строка будет содержаться в set.query.
Если же вы подставляете в запросы обьект, например:
Код:
this.query.add({query: "тест", param1: "1111", param2: '2222'});
то при обработке этого запроса у вас будут доступны переменные set.query, set.param1, set.param2. Т.е. аналогично тому, если бы вы сформировали эти переменные Конструктором запросов.

При этом Конструктор запросов вы можете использовать в обоих случаях. Но во втором примере вы сможете применить его только к query.query, т.к. об остальных переменных на этапе создания пресета ничего не известно.
 
Нет, Конструктор запросов не пропускается.

Смотрим:
2020-04-28-18-24-23.png


В логе потока 1(т.е. 1й запрос в парсер):
Код:
Set: { first: 'http://domain.com', prev: '', lvl: 0, num: 0, query: 'http://domain.com', stats: { success: 0, retries: 0, proxiesUsed: 1, requests: 0, queries: 1 }, index: 'none', url: 'http://domain.com', queryUid: '594228', cookie_jar: { version: 1 }, orig: 'http://domain.com' }

В логе потока 2(запрос, который был добавлен из 1го потока):
Код:
Set: { first: 'http://domain.com', prev: 'http://www.domain.com', lvl: '1', num: 1, query: 'http://domain.com|1', stats: { success: 0, retries: 0, proxiesUsed: 1, requests: 0, queries: 1 }, queryUid: 'fcbc15', cookie_jar: { version: 1 }, orig: 'http://domain.com|1' }

Где мои url, index в set для второго потока из конструктора запросов?
 
Ещё вопрос.
2020-04-28-21-22-21.png


Не показывает в "OverAll Stats" инфу по Retries и HTTP Requests для JS Парсера. Это баг или фича?
 
Показ статистики для JS парсеров еще не реализован.
 
Назад
Верх