我正在使用p操纵者抓取网站。但是,即使我可以看到那里的许多班级,班级仍继续以空状态回来。有什么建议吗?
我正在寻找“门户型人”的课程。页面上大约有90个。但是所有对象都是空的。
const axios = require('axios');
const cheerio = require('cheerio');
const puppeteer = require('puppeteer');
const mainurl = "https://www.fbi.gov/wanted/kidnap";
(async () => {
//const browser = await puppeteer.launch({headless: false});
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(mainurl);
await page.evaluate(() => {
window.scrollBy(0, document.body.scrollHeight);
});
await page.waitForTimeout(1000);
let persons = await page.evaluate(() => {
return document.querySelectorAll('.portal-type-person');
//return document.querySelector('.portal-type-person');
});
//console.log(persons);
for(let data in persons) {
console.log(persons[data]);
}
browser.close();
})();
答案 0 :(得分:0)
不幸的是,page.evaluate()
只能传输可序列化的值(粗糙地,JSON可以处理的值)。当document.querySelectorAll()
返回不可序列化的DOM元素的集合(它们包含方法和循环引用)时,该集合中的每个元素都被一个空对象替换。您需要返回可序列化的值(例如,href数组)或使用类似page.$$(selector)
和ElementHandle
API的东西。