Подстановка значений из одного парсера в другой

chazzzzz1910

A-Parser Enterprise License
A-Parser Enterprise
Добрый вечер! Ткните носом плз где ошибка. Беру урлы, беру регуляркой h1 тег и нужно найти по нему некоторые значения в гугле, например линк и анкор. Отдает только h1, при этом гугл парсится, наверное проблема в выводе. Бьюсь уже 2-й день. Спасибо!
Код:
class Parser {
    constructor() {
        this.defaultConf = {
            version: '0.1.16',
            results: {
                flat: [
                    ['title', 'HTML title'],
                ],
                arrays: {
                    serp: ['Top1 list', [ [ 'link', 'Link' ], [ 'anchor', 'Anchor' ] ] ],
                }
            },
            results_format: "$title : $serp.format('$link ($anchor)\\n')",
            SE_Google_Suggest_preset: 'default',
            SE_Google_preset: 'default',
        };
 
        this.editableConf = [
            ['SE_Google_preset', ['combobox', 'SE::Google preset']],
        ];
    }

    *parse(set, results) {
        let result = yield this.request('GET', set.query, {}, {
            check_content: ['<\/html>'],
            decode: 'auto-html',
        });
 
            let title = result.data.match(/<h1 class="title" itemprop="name">(.+?)<\/h1>/);
            results.title = title[1];
            result = yield this.parser.request('SE::Google', this.conf.SE_Google_preset, {pagecount: 1, linksperpage: 10}, title);
            results.serp.push(result.serp[0], result.serp[1]);
 
        return results;
    }
 
}
 
Здравствуйте. Вы в это строке передаете не выбранный title в качестве запроса, а массив
Код:
result = yield this.parser.request('SE::Google', this.conf.SE_Google_preset, {pagecount: 1, linksperpage: 10}, title);
Выводите промежуточные значения в лог для отслеживания.
Выводить можно с помощью
Код:
this.logger.put(переменная)
То есть чтобы посмотреть значение result можно сделать так
Код:
this.logger.put(JSON.stringify(result));
 
Подскажите пожалуйста, как можно декодировать сущности средствами JS? В обычном парсере пользовался для этого конструктором результатов.
 
Последнее редактирование:
Подскажите пожалуйста с еще одной проблемой. Как вставить массив со сниппетами в базу sqlite. Переменная title вставляется нормально. Перебор циклом в метод tools.sqlite.run вставить не получается. Слабоват в JS. Нагуглить ничего не получилось.
Код:
*parse(set, results) {
        let response = yield this.request('GET', set.query, {}, {
            check_content: ['<\/html>'],
            decode: 'auto-html',
        });
                if(response.success) {
            let title = response.data.match(/<h1 class="title" itemprop="name">(.+?)<\/h1>/);
                this.logger.put("Содержимое тега h1: " + title[1]);
                results.title = title[1];
            }
                 
         let result = yield this.parser.request('SE::Bing', this.conf.SE_Google_preset, {pagecount: 1, linksperpage: 10},results.title);
            if(result.info.success) {
            /*Устанавливаем шаг прохода по циклу в зависимости от парсера.
            this.logger.put("Длина массива: " + result.serp.length);
           
            for(let i = 0 ; i < result.serp.length ; i +=3){
            this.logger.put("Записаны строки " + result.serp[i] + result.serp[i+1] + result.serp[i+2]);           
            
            results.serp.push(result.serp[i],result.serp[i+1],result.serp[i+2]);
            }
           
            results.success = result.info.success;
        }
              tools.sqlite.run(db,'INSERT into test(title,snippets) VALUES(?,?)',results.title,results.serp[?])           
              return results;
    }
}
 
tools.sqlite.run(db,'INSERT into test(title,snippets) VALUES(?,?)',results.title,results.serp[?])
В SQLite нельзя вставить в ячейку массив данных.
results.serp - это массив. Если вы хотите вставить все или некоторые его элементы в одну ячейку - сформируйте из них строку с каким-либо разделителем и уже ее вставляйте. Либо, вы можете перебрать массив в цикле и для каждого значения, которое вы хотите записать в таблицу, создать новую строку.
 
Назад
Верх