Wang's blog Wang's blog
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Wang Mings

跟随大神,成为大神!
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python爬虫

  • 前端教程

    • 团队规范

    • Project

      • Axios用法与原理
      • css布局技巧
      • 深度学习平台术语
      • 谈谈前端天花板问题
      • 一个程序员的成长之路
      • Markdown-It 解析原理
      • minipack源码解析
      • PostCSS
      • Electron工程踩坑记录
      • H5 Video踩坑记录
      • Puppeteer翻页爬虫
        • [#](#常用api) 常用API
      • 重构你的javascript代码
      • RxJS入门实践
      • 官网脚手架思考与实践
      • Stylelint样式规范工具
      • TypeScript开发Vue应用
      • Typescript tsconfig.json全解析
      • Vue项目TypeScript指南
      • TypeScript在Vue2.x中的坑
      • Vue Dialog弹窗解决方案
      • Vue JSX插件依赖及语法实践
      • Webpack 模块打包原理
      • Webpack4 配置详解
      • Webpack4 devServer配置详解
      • Webpack3.x升级Webpack4指南
    • JS

    • NodeJS

    • Vue

    • React

    • 效率工具

    • 读书笔记

  • 教程
  • 前端教程
  • Project
wangmings
2022-07-19
目录

Puppeteer翻页爬虫

# # Puppeteer翻页爬虫

Puppeteer(中文翻译”木偶”) 是 Google Chrome 团队官方的无界面Chrome 工具。

pagination-crawler (opens new window) (opens new window) 是一个使用puppeteer操控搜狗输入法页面翻页,爬取每个页面数据的小爬虫。

# # 常用API

page.$ 和page.$$区别:page.$ 等于同于document.querySelector,page.$$ 等同于 document.querySelectorAll。同理page.$eval和page.$$eval区别

page.$ 和page.$eval区别:page.$返回elementHandle,这是puppteer包装的对象(非dom对象),而page.$eval第二个参数是根据第一个参数选择拿到的DOM对象。相对来说,page.$eval有更大的dom操作能力

  • 开始

    • browers = await puppeteer.launch({headless:bool})
    • page = await browers.newPage()
    • page.goto(url)
    • browers.close()
  • page

    • page.waitFor(2000 or '.selector') 等待时间或某个元素出现
    • page.waitForSelector('.selector').then(() => todo) 等待元素出现后执行todo
    • page.click('.selector')
  • 获取/操作页面元素

    • 获得被包装的elementHandle值
      • page.$('.el') 被包装成elementHandle的document.querySelector值
      • page.$('.el') 被包装成elementHandle的document.querySelectorAll值
    • 选择,第二个参数为dom
      • page.$eval('.el', dom => dom) 获取document.querySelector值后,在浏览器环境处理
      • await page.$$eval('.el', doms => doms) 获取document.querySelectorAll值后,在浏览器环境处理
    • 执行脚本 类似于在控制台中执行指令
      • await page.evaluate(body => body.innerHTML, await page.$('body')); 浏览器环境下执行的代码
  • 拦截请求

    • page.setRequestInterception(true) 开启拦截请求
    • page.on('request',interceptedRequest => interceptedRequest.abort()) 拦截逻辑
编辑 (opens new window)
H5 Video踩坑记录
重构你的javascript代码

← H5 Video踩坑记录 重构你的javascript代码→

最近更新
01
theme-vdoing-blog博客静态编译问题
09-16
02
搜索引擎
07-19
03
友情链接
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式