Pyppeteer中文文档

介绍

Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口,Puppeteer是在Node.js中使用的,而Pyppeteer是专用于Python语言的。
本文档对应的是Pyppeteer的v0.0.25版本,从目前情况来看,Pyppeteer已经很久没更新了,但对于要求不是非常高的爬虫和自动化测试使用起来还是没问题的。
当前文章中会介绍一下安装、使用等一些注意事项,在后续的文章中会逐一介绍各个API类的功能。 Pyppeteer目前支持Python3.5、3.6、3.7,但不建议在3.5的版本中使用,最佳的使用环境为3.6+。

在这里插入图片描述

安装

在已安装了Python3.6+的情况下,以windows为例,Win+R -> cmd -> 回车,打开cmd窗口。
输入:pip install pyppeteer,等待安装完毕即可。
如果需要最新版(开发版)的pyppeteer,可以通过pip命令从github地址进行安装。
输入:pip install -U git+https://github.com/miyakogi/pyppeteer.git@dev,等待安装完毕即可。

使用

在第一次使用Pyppeteer时,它会自动下载最新版本的Chromium(~170MB Mac, ~282MB Linux, ~280MB Win),如果你不希望它自动下载,那么在运行任何Pyppeteer脚本之前,手动运行pyppeteer-install命令即可下载(似乎这没什么用,普遍情况下我们都会采用自动下载的方式)。

示例:打开页面并截屏

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto('http://example.com')
    await page.screenshot({'path': 'example.png'})
    await browser.close()

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

示例:在页面中执行脚本

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto('http://example.com')
    await page.screenshot({'path': 'example.png'})

    dimensions = await page.evaluate('''() => {
        return {
            width: document.documentElement.clientWidth,
            height: document.documentElement.clientHeight,
            deviceScaleFactor: window.devicePixelRatio,
        }
    }''')

    print(dimensions)
    #>>> {'width': 800, 'height': 600, 'deviceScaleFactor': 1}
    await browser.close()

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

Pyppeteer拥有几乎和Puppeteer一样的API,更多API详情可以查看后续文章。

Pyppeteer与Puppeteer之间的差异

Pyppeteer和Puppeteer类似,由于Python和Javascript在语法、特性、主要发展领域的一些差异,在使用及运行效率上略有区别,但不影响其结果。

选项的关键字参数

Puppeteer使用对象(Python使用字典)组成选项传递给方法或函数,Pyppeteer可接受字典类型和关键字参数类型作为选项。

字典样式选项(类似于Puppeteer)

browser = await launch({'headless': True})

关键字参数样式参数

browser = await launch(headless=True)

元素选择器方法名称($->querySelector)

在Python中, 不能用于方法名称,所以使用 P a g e . q u e r y S e l e c t o r ( ) 、 P a g e . q u e r y S e l e c t o r A l l ( ) 、 P a g e . x p a t h ( ) 代替 P a g e . 不能用于方法名称,所以使用Page.querySelector()、Page.querySelectorAll()、Page.xpath()代替Page. 不能用于方法名称,所以使用Page.querySelector()Page.querySelectorAll()Page.xpath()代替Page.()、Page.$ ( ) 、 P a g e . ()、Page. ()Page.x()。Pyppeteer也有这些方法简写Page.J()、Page.JJ()、Page.Jx()。

Page.evaluate()和Page.querySelectorEval()的参数

Puppeteer的evaluate()采用原生的Javacript函数或Javascript表达式字符串,Pyppeteer采用Javascript字符串。Javascript字符串可以是函数或者表达式。Pyppeteer会自动尝试检查字符串是函数还是表达式,但有时会失败。如果表达式字符被视为函数并应发错误,可以添加force_expr=True参数,这将强制Pyppeteer把字符串视为表达式。

示例:获取页面内容

content = await page.evaluate('document.body.textContent', force_expr=True)

示例:获取元素的内部文本

element = await page.querySelector('h1')
title = await page.evaluate('(element) => element.textContent', element)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值