Получить атрибут элемента страницы в pupeeter / apify - PullRequest
0 голосов
/ 27 июня 2019

Я мог бы получить textContent html-элемента в pupeeter:

var website_element = await page.$('a[itemprop="url"]');
var website= await (await website_element .getProperty('textContent')).jsonValue();

пока, иногда textContent недостаточно, см. Следующий HTML-код:

<a itemprop="url" href="https://www.4-b.ch/de/4b-fenster-fassaden/home/">
https://www.4-b.ch/de/4b-fenster-fassad...</a>

результат неясен: "https://www.4 -b.ch / de / 4b-fenster-fassad ... " с ... в конце.

Итак, мне лучше получить атрибут href .

Но когда:

var website_element = await page.$('a[itemprop="url"]');
var website = await (await website_element.getAttribute('href')).jsonValue();

Результат Ошибка типа: website_element.getAttribute не является функцией

Есть предложения?

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Существует простой и быстрый способ сделать это, используя страницу . Функция $ eval :

var website = await page.$eval('a[itemprop="url"]', el => el.href);

Что делает page.$eval, так это то, что он сначала находит элемент в DOM, используя предоставленный селектор (первый аргумент), а затем вызывает обратный вызов (второй аргумент) с найденным элементом в качестве единственного аргумента. Возвращаемое значение обратного вызова становится возвращаемым значением самого page.$eval().

0 голосов
/ 27 июня 2019

работает:

var website_element = await page.$('a[itemprop="url"]');
var website = await (await website_element.getProperty('href')).jsonValue();
...