【发布时间】:2021-03-17 18:01:25
【问题描述】:
我在尝试使用 puppeteer 和 querySelector 在网络上抓取数据时遇到问题。
我有一个处理后查询的 nodeJS WebServer,然后调用一个函数来抓取数据。我正在发送 2 个参数(postBlogUrl 和 postDomValue)。
PostDomValue 将包含我试图从中获取数据的选择器作为字符串,例如: [itemprop='articleBody']。
如果我手动建议选择器 ([itemprop='articleBody']),一切正常,我可以检索数据,但如果我使用 postDomValue var,则不会返回任何内容。
我已经尝试使用 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;
}
}
【问题讨论】:
-
document.querySelector(`${postDomValue}`).innerHTML -
不幸的是我已经尝试过这种方法,但总是返回一个空结果
-
你试过
JSON.stringify(postDomValue)吗? -
确实,我也试过了
-
你确定
postDomValue计算结果为[itemprop='articleBody']
标签: node.js dom puppeteer queryselector