puppeteer 简单使用和一个简单的case

因为接下来要做抓取,可能要用到puppeteer, 就重新有看了一下。
需要安装puppeteer. npm install puppeteer --save 会自动下载一个Chromium, 如果不需要可能不用下。
puppeteer 超时问题处理
js中的for of 类似 python的for in
这里的抓取匹配的内容,用的都是chrome里面的selector. 当然,有些还是得你自己写,如何检查?可以chrome里面安装下面的插件
css-selector-tester
puppeteer 官方文档
page.evaulate里面的内容是没法打印出来的,如果需要打印,可以参考 page.evaluate 里面打印日志
page.evaluate 是没法直接朝里面传递参数的。如果需要像例子当中那样传递,可以这样
puppeteer 的一些其他的使用文章
https://juejin.im/post/5d4059305188255d38489a8c
https://www.qikegu.com/docs/4539
https://github.com/checkly/puppeteer-examples
chrome实例 远程部署
【puppeteer 简单使用和一个简单的case】这里给个简单的抓取的例子

const puppeteer = require('puppeteer') const url = 'https://www.stoloto.ru/ruslotto/archive' const selector = '#content > div.data.drawings_data' const selectorAll = '#content > div.data.drawings_data .elem'const Craw = async (url, selectorAll) => { const browser = await puppeteer.launch() // 使用这种方式并不高效,因为得打开chrome. 生产里面最好还是用connect的方式,这样维护一个打开的chrome,打开页面就可以了。 const page = await browser.newPage() page.on('console', consoleObj => console.log(consoleObj.text())) const waitfor = selector await page.setDefaultNavigationTimeout(0) await page.goto(url) await page.waitForSelector(waitfor) const CrawResult = await page.evaluate((selectorAll) => { const dataList = [] const results = document.querySelectorAll(selectorAll) for (const element of results) { const data = https://www.it610.com/article/{} data.drawDate = element.querySelector('.draw_date').innerText data.draw = element.querySelector('.draw').innerText data.drawUrl = element.querySelector('.draw a').href data.numbers = element.querySelector('.numbers_wrapper').innerText data.super_prize = element.querySelector('.super_prize').innerText dataList.push(data) } return dataList }, selectorAll)browser.close() return CrawResult }// 下面是两种外部调用async函数的方式。// (async () => { //const data = https://www.it610.com/article/await Craw(url, selectorAll) //console.log(data) // })()Craw(url, selectorAll).then(value => { console.log(value) })

    推荐阅读