我可以在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不是函数
有什么建议吗?
答案 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();