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