已在Puppeteer中定义函数后如何调用该函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已在Puppeteer中定义函数后如何调用该函数相关的知识,希望对你有一定的参考价值。
我具有一个从this site抓取文本数据并将其存储在JSON文件中的功能。此功能仅爬网该网站的首页,但我想单击或“转到”每个URL(有10个页面),并从每个页面抓取文本数据:
await page.goto('http://quotes.toscrape.com/page/1/')
//grab quote data
const quotes = await page.evaluate(() => {
const grabFromDiv = (div, selector) => Array.from(div
.querySelectorAll(selector), (el => el.innerText.trim()))
当前,它只是导航到第1页,获取数据,将其存储,然后退出。有没有一种方法可以一遍又一遍地调用引号函数,直到我浏览了所有10页并收集了所有数据?
答案
我只是对每个页面都做同样的事情。
如果您知道页数,则只需执行:
var quotes = ''
for each page
await page.goto(page)
quotes+ = await page.evaluate(myPageFunction)
如果您不知道页数,则需要从实际页中获取该信息。
然后,在评估功能中仅搜索下一页:
myPageFunction = function(){
// get your data
const nextPage = document.querySelector('.next a')?.href
return {data: yourData, nextPage: nextPage}
}
然后您将得到类似的内容:
nextPage = 'http://quotes.toscrape.com/page/1/'
while (nextPage= {
await page.goto(nextPage)
const result = await page.evaluate(myPageFunction)
quotes += result.data
nextPage = resut.nextPage
}
该代码仅是示例,不能按原样工作。
最佳!
以上是关于已在Puppeteer中定义函数后如何调用该函数的主要内容,如果未能解决你的问题,请参考以下文章