Node.js 将post变量与querySelector一起使用
我正面临着一个问题,试图用Puppeter和querySelector在网上搜集数据 我有一个处理post查询的nodeJS Web服务器,然后调用一个函数来获取数据。我正在发送两个参数(postBlogUrl和postDomValue) PostDomValue将包含我试图从中获取数据的选择器字符串,例如: [itemprop='articleBody'] 如果我手动建议使用选择器([itemprop='articleBody']),一切正常,我能够检索数据,但如果使用postDomValue变量,则不会返回任何内容 我已经尝试使用CSS.escape(postDomValue)来转义var,但没有成功Node.js 将post变量与querySelector一起使用,node.js,dom,puppeteer,queryselector,Node.js,Dom,Puppeteer,Queryselector,我正面临着一个问题,试图用Puppeter和querySelector在网上搜集数据 我有一个处理post查询的nodeJS Web服务器,然后调用一个函数来获取数据。我正在发送两个参数(postBlogUrl和postDomValue) PostDomValue将包含我试图从中获取数据的选择器字符串,例如: [itemprop='articleBody'] 如果我手动建议使用选择器([itemprop='articleBody']),一切正常,我能够检索数据,但如果使用postDomValue
fetchBlogContent: async function(postBlogUrl, postDomValue) {
try {
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
page = await browser.newPage();
await page.goto(postBlogUrl, {
waitUntil: 'load'
})
let description = await page.evaluate(() => {
//This works return document.querySelector("[itemprop='articleBody']").innerHTML;
//This won't return document.querySelector(postDomValue).innerHTML;
})
return description
} catch (err) {
// handle err
return err;
}
}
如果我理解正确,问题可能是您试图在浏览器上下文中执行的
page.evaluate()
参数函数中使用Node.js上下文中声明的变量。在这种情况下,需要将变量的值作为附加参数传递:
let description=等待页面。评估((选择器)=>{
returndocument.querySelector(selector.innerHTML);
},postDomValue);
有关详细信息,请参见。如果我理解正确,问题可能是您试图在浏览器上下文中执行的
page.evaluate()
的参数函数中使用Node.js上下文中声明的变量。在这种情况下,需要将变量的值作为附加参数传递:
let description=等待页面。评估((选择器)=>{
returndocument.querySelector(selector.innerHTML);
},postDomValue);
请参阅中的详细信息。
const description=等待页面。评估((值)=>
document.querySelector(value.innerHTML、JSON.stringify(postDomValue));
请参阅
const description=等待页面。评估((值)=>
document.querySelector(value.innerHTML、JSON.stringify(postDomValue));
查看文档,了解如何将参数传递到
页面。evaluate()
中的文档。querySelector(`${postDomValue}`)。innerHTML
不幸的是,我已经尝试了这个方法,但一直返回一个空结果。如果您尝试JSON。stringify(postDomValue)
?实际上,我还尝试了postDomValue
计算为[itemprop='articleBody']
document.querySelector(`${postDomValue}').innerHTML
不幸的是,我已经尝试了这个方法,但是一直返回一个空结果,你是否尝试了JSON.stringify(postDomValue)
?事实上,我也尝试了postDomValue
的计算结果是[itemprop='articleBody']
选择器
变量将在调用页面时自动设置为等于postDomValue
这样。哈哈,我在聊天中回答了这个问题,然后你可以添加一个答案,这样它就可以被接受)谢谢你们这么多人,你们的两个答案都是有效的,但是福伦特建议的一个也适用于我的另一个json值耶,@fortune对你的问题更加关注)选择器
变量将自动设置为eq调用page.evaluate()时,返回到postDomValue
)
这样。哈哈,我在聊天中回答了这个问题,然后你可以添加一个答案,这样就可以接受了)非常感谢大家,你们的两个答案都有效,但福特尼建议的答案也适用于我的其他json值(是的,@fortune对你的问题给予了更多关注)