无头铬/铬自动化库(傀儡非正式端口)

pyppeteer的Python项目详细描述


PyPIPyPI versionDocumentationTravis statusAppVeyor statuscodecov

非官方Python端口 puppeteerjavascript(无头) chrome/chrome浏览器自动化库

安装

Pyppeteer需要python 3.6+。 (实验上支持Python3.5)

通过pypi中的pip安装:

python3 -m pip install pyppeteer

或者从github

安装最新版本
python3 -m pip install -U git+https://github.com/miyakogi/pyppeteer.git@dev

用法

Note: When you run pyppeteer first time, it downloads a recent version of Chromium (~100MB). If you don’t prefer this behavior, run ^{tt1}$ command before running scripts which uses pyppeteer.

example:打开网页并截图。

importasynciofrompyppeteerimportlaunchasyncdefmain():browser=awaitlaunch()page=awaitbrowser.newPage()awaitpage.goto('http://example.com')awaitpage.screenshot({'path':'example.png'})awaitbrowser.close()asyncio.get_event_loop().run_until_complete(main())

Example:评估页面上的脚本

importasynciofrompyppeteerimportlaunchasyncdefmain():browser=awaitlaunch()page=awaitbrowser.newPage()awaitpage.goto('http://example.com')awaitpage.screenshot({'path':'example.png'})dimensions=awaitpage.evaluate('''() => {
        return {
            width: document.documentElement.clientWidth,
            height: document.documentElement.clientHeight,
            deviceScaleFactor: window.devicePixelRatio,
        }
    }''')print(dimensions)# >>> {'width': 800, 'height': 600, 'deviceScaleFactor': 1}awaitbrowser.close()asyncio.get_event_loop().run_until_complete(main())

皮皮提尔和木偶师有几乎相同的API。 更多的api列在 document

Puppeteer’s documenttroubleshooting对于pyppeteer用户也很有用

木偶师与侏儒的区别

Pyppeteer和Puppeter是一样的,但是python之间有一些不同 而JavaScript则使之变得困难

这些是木偶师和侏儒的区别。

选项的关键字参数

puppeter使用对象(python中的dictionary)将选项传递给 功能/方法。Pyppeteer接受字典和关键字参数 选项。

字典样式选项(类似于木偶演员):

browser=awaitlaunch({'headless':True})

关键字参数样式选项(更像pythonic,不是吗?):

browser=awaitlaunch(headless=True)

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

在python中,$不能用于方法名。 所以侏儒用 ^{TT5}$/^{TT6}$/^{TT7}$而不是 Page.$()/Page.$$()/Page.$x()Pyppeteer对这些也有简称 方法,Page.J()Page.JJ()Page.Jx()

Page.evaluate()Page.querySelectorEval()

的参数

puppeter版本的evaluate()采用javascript原始函数或字符串 JavaScript表达式,但pyppeteer接受字符串JavaScriptJavaScript 字符串可以是函数或表达式Pyppeteer试图自动检测 字符串是函数或表达式,但有时会失败if表达式 字符串被视为函数并引发错误,请添加force_expr=True选项, 这迫使pyppeteer将字符串视为表达式。

获取页面内容的示例:

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

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

element=awaitpage.querySelector('h1')title=awaitpage.evaluate('(element) => element.textContent',element)

未来计划

  1. 木偶师的追赶发展
    • 不打算添加puppeter没有的原始api

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
socketJava UDP连接   java deeplearning4j为CNN培训创建数据仓库   java启动另一个jar并向其提供输入   java将FileChooseParams中的mime类型转换为正确的格式,以用于Intent。集合类型   java Android MediaPlayer:同时流式处理和写入文件。   java如何在Spring云数据流中注册应用程序?   类中的java静态字段初始化序列   java如何在socket中进行变量替换。发送函数   java在向ZooKeeper添加带空格的字符串时的奇怪行为   java中的derby注册表单   java如果我有一个可运行线程和一个实现线程,如何使用wait()和notify()?   java在安卓中以y轴旋转imageview中的立方体   工作进程响应rabbitmq消息的java长时间运行进程   java Ehcache与数据库不同步   java加载JNI Dll   java如何在一个arraylist中对两个不同的模型进行排序?