【发布时间】:2021-10-11 18:55:22
【问题描述】:
我正在尝试解析一个漫画网站并保存所有页面。我有代码可以运行保存图像的页面。
我无法单击转到下一页的链接。我正在使用 Node 并使用 Puppeteer。我以为我可以只使用document.querySelectorAll("span.next-prev-text") 来获取链接中的跨度。
包括尝试获取下一页的相关代码和我尝试单击 NEXT CHAPTER 链接的 html。
<div class="col-md-6 prev-post">
<a class="" href="https://tokyorevengersmanga.com/manga/tokyo-manji-revengers-vol-1-chapter-1-reborn/">
<span class="next-prev-text">PREVIOUS CHAPTER </span>
</a>
</div>
<div class="col-md-6 next-post">
<a class="" href="https://tokyorevengersmanga.com/manga/tokyo-manji-revengers-chapter-3/">
<span class="next-prev-text">NEXT CHAPTER</span>
</a>
</div>
(async() => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
//starting page
await page.goto(
"https://tokyorevengersmanga.com/manga/tokyo-manji-revengers-vol-1-chapter-1-reborn/"
);
console.log("page has loaded")
const chapter = await page.evaluate(() => {
const pages = Array.from(
document.querySelectorAll("img.aligncenter")
).map((image) => image.getAttribute("src"));
return pages
});
fs.writeFileSync("./data.json", JSON.stringify(chapter));
console.log("File is created!");
const nextPage = await page.evaluate(() => {
var obj = document.querySelectorAll("span.next-prev-text");
return obj[1];
})
await page.click(nextPage);
await page.waitForNavigation();
await browser.close();
} catch (error) {
console.log(error);
}
【问题讨论】:
-
如果要返回 dom 节点,您需要评估句柄而不是评估。
标签: javascript html node.js puppeteer