如何使用剧作家获取页面上的所有图像?
使用以下代码,我只能得到一个(ElementHandle
),而不能得到一个集合。
const { chromium } = require("playwright");
class Parser {
async parse(url) {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(url);
await page.waitFor("img");
// TODO: get somehow collection of elements
return await page.$("img");
}
}
module.exports = Parser;
另一个模块中的某个地方很远:
const Parser = require("./path/to/dir/Parser.js");
const parser = new Parser();
parser
.parse(body.url)
.then(elemHandle => {
// here I get only one ElementHandle object, but suppose to get an array or collection
})
.catch(err => {
throw new Error(err);
});
Node v.12.16.1
答案 0 :(得分:5)
我已经找到答案了。需要使用page.$$(selector)
而不是page.$(selector)
来像document.querySelectorAll(selector)
一样抓取。
答案 1 :(得分:1)
答案 2 :(得分:1)
正如在他接受的答案中提到的,您可以使用 await page.$$(selector)
。
这是一个link to the page.$$ official documentation
您也可以使用以下代码。
const result = await page.evaluate(selector => document.querySelectorAll(selector) , selector);