Я впервые пытаюсь использовать библиотеку cheerio, чтобы сделать небольшую очистку веб-страниц от paginas amarillas, таких как название компании, адрес и т. Д. c ... Адрес находится в промежутке внутри промежутка без класса, только itemprop="streetAddres"
, я пробовал разные способы, так как это длинная строка, чтобы добраться до этого селектора, я получаю данные до того, как прямо перед itemprop, но я не знаю, как нацелить селектор itemprop, тот, который у меня есть проблема в том, что константа pathAddreses возвращает пустой массив в журнале консоли; если я удаляю последний элемент строки (itemprop='streetAddres'
), он возвращает мне данные, но не совсем тот, который я хочу
Вот код:
const cheerio = require("cheerio");
const request = require("request-promise");
//const of the classes of the paginas amarillas elements we are aiming to
const pathProfesionals1 =
".container .row .first-content-listado .col-lg-7.col-md-8.col-xs-12 .bloque-central .central .listado-item.item-ip .box .cabecera .row .col-xs-11.comercial-nombre a h2 span";
const pathProfesionals2 =
".container .row .first-content-listado .col-lg-7.col-md-8.col-xs-12 .bloque-central .central .listado-item.item-ig .box .cabecera .row .col-xs-11.comercial-nombre a h2 span";
const pathTelephones1 =
".container .row .first-content-listado .col-lg-7.col-md-8.col-xs-12 .bloque-central .central .listado-item.item-ip .box .pie-pastilla .row .col-xs-4 a.llama-desplegable.btn.btn-amarillo.btn-block.phone.hidden.d-none span";
const pathTelephones2 =
".container .row .first-content-listado .col-lg-7.col-md-8.col-xs-12 .bloque-central .central .listado-item.item-ig .box .pie-pastilla .row .col-xs-4 a.llama-desplegable.btn.btn-amarillo.btn-block.phone.hidden.d-none span";
const pathAddress1 = `.container .row .first-content-listado .col-lg-7.col-md-8.col-xs-12 .bloque-central .central .listado-item.item-ig .box .row a .location span *[itemprop = 'streetAddress']`;
const pathAddress2 = "";
init = async () => {
const arrCompanyName = [];
const arrTelephones = [];
const arrAddresses = [];
const { category, city } = this.state;
const $ = await request({
uri: `https://www.paginasamarillas.es/search/${category}/all-ma/${city}/all-is/malaga/all-ba/all-pu/all-nc/1?what=carpintero&where=malaga&ub=false&qc=true`,
transform: body => cheerio.load(body) //una vez hago la peticion lo paso a cheerio para que lo analice
});
const profesionals1 = $(pathProfesionals1).each((i, el) =>
arrCompanyName.push($(el).text())
);
const telephones1 = $(pathTelephones1).each((i, el) =>
arrTelephones.push($(el).text())
);
const profesionals2 = $(pathProfesionals2).each((i, el) =>
arrCompanyName.push($(el).text())
);
const telephones2 = $(pathTelephones2).each((i, el) =>
arrTelephones.push($(el).text())
);
const addresses1 = $(pathAddress1).each((i, el) =>
arrAddresses.push($(el).text())
);
console.log(arrAddresses);
}