Запросы к другим парсерам | Документация | A-Parser - парсер для SEO, маркетинга, разработчиков и SaaS
Перейти к основному содержимому

Запросы к другим парсерам

await this.parser.request(parser, preset, overrideParams, query)

await this.parser.request(parser, preset, overrideParams, query)

Получение результатов от другого парсера (встроенного или еще другого JS парсера), в качестве аргументов указывается

  • parser - имя парсера (SE::Google, JS::Custom::Example)
  • preset - пресет настроек вызываемого парсера
  • overrideParams - хэш с переопределениями настроек вызываемого парсера
  • query - запрос

Частично игнорирует пресет вызываемого парсера, который задаётся параметром preset. А именно, настройки useproxy, proxyChecker, proxybannedcleanup берутся из парсера, который вызывает await this.parser.request.

В overrideParams можно переопределять параметры вызываемого парсера, также доступны такие флаги:

overrideParams.resultArraysWithObjects

resultArraysWithObjects: 0 - определяет в каком виде возвращать массивы результатов вызываемого парсера:

  • если включено (1) - будут возвращаться массивы объектов
    [{link: 'link1', anchor: 'anchor1'}, {link: 'link2', anchor: 'anchor2'}, ...]
  • если выключено (0) - будут возвращаться стандартные массивы значений
    ['link1', 'anchor1', 'link2', 'anchor2', ...]

Пример:

import { BaseParser } from 'a-parser-types';

class JS_DocExample extends BaseParser {
static defaultConf: typeof BaseParser.defaultConf = {
results_format: "$links.format('$link\n')",
results: {
arrays: {
links: ['Links', [
['link', 'link']
]]
}
}
}

async parse(set, results) {
let response = await this.parser.request('SE::Google', 'default', {
resultArraysWithObjects: 1,
pagecount: 1
}, set.query)
results.success = response.success;

if(response.success) {
response.serp.forEach(element => {
results.links.push(element.link);
});
}

return results;
}
}

Пример результата:

https://www.speedtest.net/
https://www.investopedia.com/terms/t/t-test.asp
https://www.cdc.gov/coronavirus/2019-ncov/testing/diagnostic-testing.html
https://fast.com/
https://www.thinkwithgoogle.com/feature/testmysite/
https://projectstream.google.com/speedtest
https://www.nhs.uk/conditions/coronavirus-covid-19/testing/
https://www.fda.gov/consumers/consumer-updates/coronavirus-disease-2019-testing-basics
https://zoom.us/test
https://www.gov.uk/get-coronavirus-test
https://en.wikipedia.org/wiki/Test_(assessment)
...

overrideParams.needData

needData: 1 - определяет передавать (1) или нет (0) в ответе data/pages[], может использоваться для оптимизации

overrideParams.needResults

needResults: [ ... ] - перечень результатов которые необходимо возвращать. Пример:

let response = await this.parser.request('SE::Bing', 'default', {
needResults: [
'totalcount'
]
}, set.query)

Результат:

{"success":1,"info":{"success":1,"retries":0},"totalcount":"2130000000"}
tip

Аналогично работает для API::Server::RedisAPI::Server::Redis