1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Telegram чат для обсуждения работы JS парсеров и Node.js модулей: https://t.me/a_parser_javascript
  3. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2200+ и мы растем!
    Скрыть объявление

Не работает парсер

Тема в разделе "Техническая поддержка по JavaScript парсерам", создана пользователем Surfivolga, 8 дек 2020.

  1. Surfivolga

    Surfivolga A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    13 фев 2017
    Сообщения:
    5
    Симпатии:
    0
    Проблема в том, что примерно год назад парсер работал, а сейчас перестал. В настройках парсера ничего не меняли, в скрипте тоже. Как починить парсер, чтобы он начал опять работать?

    Скрипт парсера для проверки уникальности карточек товара через API https://content-watch.ru/api/
    Код:
    class Parser {
        constructor() {
            this.defaultConf = {
                version: '0.1.4',
                results: {
                    flat: [
                        ['text', 'text'],
                        ['percent', 'percent'],
                        ],
                    arrays: {
                        matches: ['Совпадения',[
                            ['url', 'URL'],
                            ['percent', 'Percent']
                        ]],
                    }
                },
                results_format: '$query: $text\\n',
                key_api: '123456789',
                parsecodes: {
                    200: 1,
                },
                max_size: 200 * 1024,
            };
            this.editableConf = [
                ['key_api', ['textfield', 'Key Api']],
            ];
        }
    
        *parse(set, results) {
            let text = yield * this.getText(set.query);
            if(text){
                text = this.utils.removeHtml(this.utils.urlFromHTML(text));
                results.text = text;
                results = yield* this.getContentWatch(text,results);
                results.success = 1;
            }
            return results;
        }
        *getText(url){
            let response = yield this.request('GET',url,{},{
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
                 decode: 'auto-html',
            });
            if(response.success){
                let descrText = response.data.match(/"mainProductContent":\s*\[\{\s*"product":\s*{\s*"longDescription":\s*"(?:<p>\s*)?(.+?)(?:\s*\/p>)?",\s*"/);
                descrText = descrText ? descrText[1] : false;
                return descrText;   
            }
            return false;
        }
        *getContentWatch(text,results){
            let response = yield this.request('POST', 'https://content-watch.ru/public/api/',{
                'key': this.conf.key_api,
                'text': text,
                'test': 0,
    
             },{
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
                 decode: 'auto-html',
            });
            if(response.success){
                results.matches = [];
                let json = JSON.parse(response.data);
                results.percent = json.percent ? json.percent : '';
                if(json.matches) {
                    json.matches.map(elem => {
                        results.matches.push(elem.url, elem.percent);
                    });
                } else if(json.error) {
                    this.logger.put('Error: ' + json.error);
                }
            }
            return results;
        }
    }
     
  2. Support Ilia

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

    Регистрация:
    6 апр 2020
    Сообщения:
    168
    Симпатии:
    35
    Здравствуйте!

    Посмотрите в Тестовом парсинге где именно и на каком шаге происходит ошибка.
    Также, чтобы протестировать ваш код, нам нужен ваш key_api для content-watch.ru. Напишите в @aparser_bot с ссылкой на эту тему и вашим key_api для content-watch.ru для теста
     

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