const textContent = await page.evaluate(() => {
let name = document.querySelector('.listing-name').innerText;
let street = document.querySelector('.street').innerText;
let call = document.querySelector(".ion-android-call").innerText;
return name + "^" + street + "^" + call;
});
await console.log(textContent.name);
我想在此处textContent.name
访问,但会打印undefined
值。
如何访问属性?
是否可以访问textContent
?
答案 0 :(得分:0)
正如亚历山大在他的评论中所说的那样,textContent不是一个对象而只是一个字符串。如果您想要在不更改字符串的情况下访问不同的值,可以使用String.split之类的
console.log(textContent.split('^')[ 0 ])
根据' ^'的位置自动将textContent变量拆分为数组。存在(并在此过程中删除它们。)
如果您希望将其设为基于对象的方法,则需要在调用page.evaluate
时修改代码以适应,例如
const textContent = await page.evaluate(() => {
let name = document.querySelector('.listing-name').innerText;
let street = document.querySelector('.street').innerText;
let call = document.querySelector(".ion-android-call").innerText;
return {
name: name,
street: street,
call: call
}
});
await console.log(textContent.name);
您还可以创建一个单独的变量Object并在其中设置属性和值,然后返回它,这将消除2/3局部变量,或者如上所述直接使用return,而是在其中设置属性值并使用没有变数。但是对于你来说,最可读的东西往往是你编写自己的代码的最佳方式,至少在你决定改变你的风格之前(或者它自然地演变)。
答案 1 :(得分:0)
您可以通过返回来公开本地块的其他属性。
const textContent = await page.evaluate(() => {
let name = document.querySelector('.listing-name').innerText;
let street = document.querySelector('.street').innerText;
let call = document.querySelector(".ion-android-call").innerText;
return
{
content: name + "^" + street + "^" + call,
name: name ,
street : street,
call : call
});
您无法通过textContent.content
访问原始结果并使用textContent.name
命名。