javascript - 使用 Puppeteer 查找以某个单词开头的所有 ID
问题描述
我正在尝试查找 ID 以"pub"开头的所有标签,例如:<*div id="pub-1">
同时<*div id="pub-foo">
存储这些 ID 结果并将它们插入到数组中。我有以下代码:
'use strict';
const puppeteer = require('puppeteer');
var fs = require('fs');
var data = fs.readFileSync('sites.csv')
.toString()
.split('\n')
.map(e => e.trim())
.map(e => e.split(',').map(e => e.trim()));
(async () => {
for (let i = 0; i < data.length; i++) {
try{
const url = data[i];
const browser = await puppeteer.launch({
headless: false,
args: ['--window-size=1920,1080'],
defaultViewport: null
});
const page = await browser.newPage();
await page.goto(`${url}`, { waitUntil: 'networkidle0' });
console.log('Loading page: '+ data[i]);
const spanVal = await page.$eval('#pub-1', el => el.innerHTML); // my problems lies here
console.log('\n \n \n Log: '+ spanVal)
await browser.close();
} catch(err){
console.log('Error ' + err)
}
}
await browser.close();
})();
也欢迎任何关于代码质量的建议。:)
解决方案
使用选择器[id^="pub"]
获取以 . 开头的 ID pub
。$$eval
使用而不是迭代匹配$eval
,并映射到每个人的内部HTML。
const spanVals = await page.$$eval('[id^="pub"]', elms => elms.map(elm => elm.innerHTML));
推荐阅读
- python - 在使用 conda 构建的包中包含环境
- javascript - 如何通过反应读取 cookie?
- apache-spark - 使用 Spark Streaming 更新基于 Kafka Stream 的静态源?
- matlab - 如何将多维矩阵重塑为二维,反之亦然?
- flutter - CircleProgressIndicator 带圆帽
- google-analytics - 按子目录追溯过滤 Google Analytics
- postgresql - psql 从 csv 复制自动生成 id
- javascript - 将多个复选框的 Value[S] 传递给 Controller MVC | AJAX
- javascript - 尝试使用 Uglify 最小化代码时出现意外令牌
- xaml - 如何在 StaticResource 中设置字体?