pyppeteer的环境搭建,常见参数及2个案例

一. pyppeteer介绍

Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 API,通过Javascript代码来操纵Chrome浏览器,完成数据爬取、Web程序自动测试等任务。

Puppeteer 默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。

Pyppeteer的两大特点,chromium浏览器和asyncio框架:

  • Chromium是一款独立的浏览器,是Google为发展自家的浏览器Google Chrome而开启的计划,相当于Chrome的实验版,Chromium的稳定性不如Chrome但是功能更加丰富,而且更新速度很快,通常每隔数小时就有新的开发版本发布。
  • asyncio是Python的一个异步协程库,自3.4版本引入的标准库,直接内置了对异步IO的支持。

github地址:https://github.com/puppeteer/puppeteer/blob/v2.1.1/docs/api.md

中文版教程:https://zhaoqize.github.io/puppeteer-api-zh_CN/

二. 环境搭建
  1. 国内无法访问 可以使用国内镜像
pip install pyppeteer -i https://pypi.douban.com/simple
  1. chromium下载地址:https://npm.taobao.org/mirrors/chromium-browser-snapshots/,下载之后解压之后,通过executablePath属性指定运行浏览器了

三. 常见参数

属性 数据类型 描述
executablePath str chrome.exe运行的路径
ignorehttpserrrors bool 忽略https错误,默认false
headless bool True 开始无头浏览器 False关闭无头
dumpio bool 设置True 解决浏览器多开卡死

args的参数设置:

属性 数据类型 描述
–disable-infobars - 关闭自动化提示框
–window-size=1920,1080 str 设置浏览器大小吗,1920是宽,1080是宽
–log-level=30 str 日志保存等级
–start-maximized - 窗口最大化模式
–proxy-server=http://localhost:1080 str 设置代理
userDataDir=D:\userData\ str 用户文件保存地址

四. 使用案例

4.1 案例1
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import asyncio
from pyppeteer import launch


async def main():
    # 浏览器 启动参数
    start_parm = {
        # 启动chrome的路径
        "executablePath": r"E:\tmp\chrome-win\chrome.exe",
        # 关闭无头浏览器 默认是无头启动的
        "headless": False,
    }
    # 创建浏览器对象,可以传入 字典形式参数
    browser = await launch(**start_parm)

    # 创建一个页面对象, 页面操作在该对象上执行
    page = await browser.newPage()

    await page.goto('http://www.nows.fun/')  # 页面跳转
    page_text = await page.content()  # 页面内容
    print(page_text)
    await browser.close()  # 关闭浏览器对象


asyncio.get_event_loop().run_until_complete(main())   # 创建异步池并执行main函数。

执行结果如下图:
pyppeteer的环境搭建,常见参数及2个案例_第1张图片

4.2 案例2: 设置可视化参数,代码如下
# !/usr/bin/python
# -*- coding: UTF-8 -*-

import asyncio
import tkinter

from pyppeteer import launcher

# 注意 在导入launch之前先把默认参数改了
# 去除自动化 启动参数
launcher.AUTOMATION_ARGS.remove("--enable-automation")
from pyppeteer import launch


async def main():
    # 浏览器 启动参数
    start_parm = {
        # 启动chrome的路径
        "executablePath": r"E:\tmp\chrome-win\chrome.exe",
        # 关闭无头浏览器
        "headless": False,
        "args": [
            '--disable-infobars',  # 关闭自动化提示框
            '--no-sandbox',  # 关闭沙盒模式
            '--start-maximized',  # 窗口最大化模式
        ],
    }
    browser = await launch(**start_parm)
    page = await browser.newPage()

    # 查看当前 桌面视图大小
    tk = tkinter.Tk()
    width = tk.winfo_screenwidth()
    height = tk.winfo_screenheight()
    tk.quit()
    print(f'设置窗口为:width:{width} height:{height}')

    # 设置网页 视图大小
    await page.setViewport(viewport={'width': width, 'height': height})
    await page.goto('http://www.nows.fun/')
    page_text = await page.content()
    print(page_text)
    await browser.close()


asyncio.get_event_loop().run_until_complete(main())

你可能感兴趣的:(爬虫总结和详解)