在pepeeter / apify中获取页面元素的属性

时间:2019-06-27 13:07:54

标签: puppeteer apify

我可以在pepeeter中获取html元素的 textContent

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();

结果为 TypeError:website_element.getAttribute不是函数

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

有一种使用page.$eval函数的简便方法:

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

page.$eval的作用是,它首先使用提供的选择器(第一个参数)在DOM中找到一个元素,然后使用找到的元素作为其唯一参数调用回调(第二个参数)。回调的返回值成为page.$eval()本身的返回值。

答案 1 :(得分:0)

有效:

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