javascript - 如何在 puppeteer 中获取 div 中的文本
问题描述
const puppeteer = require("puppeteer");
(async function main() {
try {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
page.setUserAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36");
await page.goto("https://www.qimai.cn/rank/index/brand/all/genre/6014/device/iphone/country/us/date/2019-03-19", {waitUntil: 'load', timeout: 0});
await page.waitForSelector(".container");
const sections = await page.$$(".container");
const freeButton = await page.$('[href="/rank/index/brand/free/device/iphone/country/us/genre/6014/date/2019-03-19"]');
await freeButton.click();
// free list
const appTable = await page.waitForSelector(".data-table");
const lis = await page.$$(".data-table > tbody > tr > td");
// go to app content
const appInfo = await page.$("a.icon");
// appInfo.click();
for (const content of lis) {
const name = await content.$("div.appname");
const gameName = await page.evaluate(name => name.innerText, name);
console.log("Game Name: ", gameName);
}
console.log("-- bingo --");
} catch (e) {
console.log("our error", e);
}
})();
我似乎无法从中获取文本,并且我收到此错误:TypeError: Cannot read property 'innerHTML' of null。我已经尝试了所有方法,但它不起作用。这是网站的链接。https://www.qimai.cn/app/rank/appid/1451505313/country/us
解决方案
我使用“waitForSelector”方法,然后尝试获取文本
await page.waitForSelector('your selector')
let element = await page.$('your selector')
let value = await page.evaluate(el => el.textContent, element)
推荐阅读
- unity3d - 如何使用 Odin Serializer 保存 Unity GameObject?
- css - CSS3双背景图像未在Firefox中显示,但在Chrome中显示?
- r - 计算R中标记之间的单词
- android - 如何在 Android JNI 上设置 SQLite 以处理 C 中的多线程持久性
- node.js - Discord 节点 js “TypeError:channel.send 不是函数”
- python - 如何从 JPATH 构造 JSON
- javascript - onchange of SELECT 元素我希望下一个 INPUT 元素需要更改。INPUT 元素在数组“quest[]”中命名
- docker - heroku-container-registry 被列入黑名单
- ios - 将块并发插入并发队列
- reactjs - React 中的双重渲染 - 这是一个问题吗?