Проблема в том, что примерно год назад парсер работал, а сейчас перестал. В настройках парсера ничего не меняли, в скрипте тоже. Как починить парсер, чтобы он начал опять работать?
Скрипт парсера для проверки уникальности карточек товара через API https://content-watch.ru/api/
Скрипт парсера для проверки уникальности карточек товара через 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;
}
}