我已经检索了类的所有元素(“ .col.double.societe.u2d.hasLogo”),我想循环它们中的每一个以检索类('.dresse')文本
我的代码是:
const societeHandles = await page.$$('.col.double.societe.u2d.hasLogo');
for(const societeHandle of societeHandles){
const adresse = await societeHandle.$eval(".adresse");
但是我遇到运行错误错误:未能找到与选择器“ .adresse”匹配的元素
教室在那里:
<p class="adresse">
325 rue Pasteur
<br><a href="/annuaire/aquitaine/gironde/bordeaux">33200 Bordeaux</a>
<br><a href="/annuaire/aquitaine/gironde">Gironde</a>
<br><a href="/annuaire/aquitaine">Aquitaine</a>
</p>
我允许这样做吗?还是语法错误? 谢谢
答案 0 :(得分:1)
由于您选择要定位所有元素的选择器,因此操纵up的人无法找到address元素,这可能太具体了。尝试.col.double.societe
。
require('puppeteer').launch().then(async browser => {
const page = await browser.newPage();
await page.goto('http://www.dollmedia-btp.com/annuaire/aquitaine/gironde/bordeaux');
const societeHandles = await page.$$('.col.double.societe');
// Have we got any addresses?
console.log("Total count: " + societeHandles.length)
for(const societeHandle of societeHandles){
const adresse = await societeHandle.$eval(".adresse", el => el.textContent.trim());
console.log(adresse + "\n")
}
await browser.close();
});
记录请求期间是否找到任何东西也是一种方便的做法,因此我记录了找到的节点数。
还请注意handle.$eval
的正确用法:您向函数传递了selector
和function
以便在浏览器上下文中执行。 (在我的示例中,我只是从找到的元素中返回文本)