Node.js 将post变量与querySelector一起使用

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

我正面临着一个问题,试图用Puppeter和querySelector在网上搜集数据

我有一个处理post查询的nodeJS Web服务器,然后调用一个函数来获取数据。我正在发送两个参数(postBlogUrl和postDomValue)

PostDomValue将包含我试图从中获取数据的选择器字符串,例如: [itemprop='articleBody']

如果我手动建议使用选择器([itemprop='articleBody']),一切正常,我能够检索数据,但如果使用postDomValue变量,则不会返回任何内容

我已经尝试使用CSS.escape(postDomValue)来转义var,但没有成功

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对你的问题给予了更多关注)