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);
}
})();
Je ne peux pas sembler avoir le texte et je reçois cette erreur: TypeError: Impossible de lire la propriété 'innerhtml' de NULL. J'ai essayé de toutes les manières, mais cela ne fonctionne pas. Ceci est le lien vers le site Web. https://www.qimai.cn/app/Rank/appid/1451505313/country/us
Si vous obtenez des éléments de XPath, utilisez simplement le code ci-dessus.
<span class="toggleable"> Random text.</span>
// right click on this element -> copy -> copy XPath
const element = await page.$x('//thecopiedxpath');
const textObject = await element[0].getProperty('textContent');
const text = textObject._remoteObject.value;
console.log(text);
Qui imprimera le message "Texte aléatoire".
Du Documentation :
const tweetHandle = await page.$('.Tweet .retweets');
expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10');
//get the xpath of the element
const getXpathOfRecordLabel = await page.$x('//div');
//get the property of textContent
const getTheProperty = await getXpathOfRecordLabel[0].getProperty(
'textContent'
);
//get the value
const getRecordName = getTheProperty._remoteObject.value;
console.log(getRecordName);