Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
this.defaultConf = {
version: '0.1.1',
*parse(set, results) {
set.query = 'https://a-parser.com/img/captcha.jpeg'
//Manual download captcha + recognize + report bad
let response = yield this.request('GET', set.query, {}, {});
if(response.success) {
const captcha = yield this.captcha.recognize('antigate.com', response.data, 'jpeg');
if(captcha.answer) {
this.logger.put('Captcha Answer: ' + captcha.answer);
if(captcha.answer != 'ifignt eyelids') {
yield this.captcha.reportBad('antigate.com', captcha.id);
}
}
else {
this.logger.put('Captcha recognize error: ' + captcha.error);
}
this.logger.put('Recognize from data: ' + JSON.stringify(captcha));
}
//Auto download captcha
const captcha = yield this.captcha.recognizeFromUrl('antigate.com', set.query);
this.logger.put('Recognize from url: ' + JSON.stringify(captcha));
results.success = 1;
return results;
}
class Parser {
constructor() {
this.defaultConf = {
version: '0.1.1',
results: {
flat: [
['key', 'Keyword'],
['link', 'Link'],
['content', 'Page content'],
]
},
results_format: "$key - $link\\n$content\n\\n",
search_engine: 'SE::Google',
SE_Google_preset: 'default',
SE_Yandex_preset: 'default',
Net_HTTP_preset: 'default',
};
this.editableConf = [
['SE_Google_preset', ['combobox', 'SE::Google preset']],
['SE_Yandex_preset', ['combobox', 'SE::Yandex preset']],
['Net_HTTP_preset_preset', ['combobox', 'Net::HTTP preset']],
['search_engine', ['combobox', 'Search engine', ['SE::Google', 'Google'], ['SE::Yandex', 'Yandex']]],
];
}
*parse(set, results) {
return yield* set.lvl == 0 ? this.parseSE(set, results) : this.parseContent(set, results);
}
*parseSE(set, results) {
this.logger.put("Start scraping query: " + set.query);
this.logger.put(`Use ${this.conf.search_engine}`);
let SEresp = yield this.parser.request(
this.conf.search_engine,
this.conf[this.conf.search_engine.replace(/::/, '_') + '_preset'],
set.query
);
if(SEresp.info.success) {
let link_count = 0;
let step = this.conf.search_engine == 'SE::Google' ? 3 : 5;
for (let i = 0; i < SEresp.serp.length; i += step) {
const link = SEresp.serp[i];
this.query.add(link);
link_count += 1;
}
this.logger.put("Added " + link_count + " links");
results.success = 1;
results.SKIP = 1;
return results;
}
else {
this.logger.put(`Error scraping ${this.conf.search_engine}`);
results.success = 0;
return results;
}
}
*parseContent(set, results) {
this.logger.put("Scraping content from " + set.query);
let response = yield this.parser.request('Net::HTTP', this.conf.Net_HTTP_preset, set.query);
results.key = set.first;
results.link = set.query;
if(response.info.success) {
results.content = response.data;
results.success = 1;
}
else {
this.logger.put(set.query + " - error scraping content");
results.success = 0;
}
return results;
}
}
ДД. Подскажите, где прочитать как работает встроенный обработчик попыток? Что такое успешная и не успешная попытка?С версии 1.1.769 для this.request добавлен параметр attempt, который указывает на текущую попытку, при этом встроенный обработчик попыток игнорируется, пример:
Код:yield this.request('GET', 'http://domain.com/', {}, {attempt: 3}); // в логе отобразится что текущий запрос - 3яя попытка
let response = yield this.request('GET', 'https://foobar/', {}, {
check_content: ['<\/html>'],
decode: 'auto-html',
parsecodes: {200: 1},
browser: 1,
});
for(attempt = 1; attempt <= this.conf.proxyretries; attempt++) {
let response = yield this.request('GET', 'https://foobar/', {}, {
check_content: ['<\/html>'],
decode: 'auto-html',
parsecodes: {200: 1},
browser: 1,
attempt: attempt,
});
if (response.success) {
break;
}
this.proxy.next();
}
A-Parser - это профессиональная платформа для сбора данных промышленного масштаба: 10 000+ потоков, 110+ парсеров и гибкость Node.js. Автоматизируйте задачи в SEO, e-commerce и арбитраже трафика с непревзойденной скоростью и масштабируемостью
Нужна помощь с настройкой или работой парсера? Напишите в поддержку, поможем довести все до результата.
Написать в поддержку