首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将post变量与querySelector一起使用

将post变量与querySelector一起使用
EN

Stack Overflow用户
提问于 2021-03-18 02:01:25
回答 2查看 45关注 0票数 1

我正面临着一个问题,试图用木偶师和querySelector在网络上抓取数据。

我有一个处理post查询的nodeJS WebServer,然后调用一个函数来抓取数据。我发送了两个参数(postBlogUrl和postDomValue)。

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

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

我已经尝试使用CSS.escape(postDomValue)来避开var,但是没有成功。

代码语言:javascript
运行
复制
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;
 }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-18 04:08:25

代码语言:javascript
运行
复制
const description = await page.evaluate((value) => 
    document.querySelector(value).innerHTML, JSON.stringify(postDomValue));

有关如何在puppeteer中将参数传递给page.evaluate()的文档,请参阅文档

票数 2
EN

Stack Overflow用户

发布于 2021-03-18 03:45:47

如果我理解正确的话,问题可能是您试图在浏览器上下文中执行的page.evaluate()的参数函数中使用在Node.js上下文中声明的变量。在这种情况下,您需要将变量的值作为附加参数进行传递:

代码语言:javascript
运行
复制
  let description = await page.evaluate((selector) => {
    return document.querySelector(selector).innerHTML;
  }, postDomValue);

page.evaluate()中可以看到更多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66678742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档