web自动化|pypptr的使用-python版本puppeteer

介绍

puppeteer: https://www.jianshu.com/p/9ceb75142ce3
pypptr:puppeteer的非官方python库

环境准备

1.安装python3
2.安装pypptr
python3 -m pip install pyppeteer

实例

import asyncio
from pyppeteer import launch

async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('http://www.baidu.com')
await page.screenshot({'path': 'baidu.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())
执行:python3 pypptr-demo.py


image.png

第一次执行回去下载chromium,执行后看到控制台有打印信息,在工程目录下有截图。

puppeteer与pypptr的不同点

puppeteer与pypptr大部分情况下是很相同的,由于javascript与python的不同语言特性让这两者有了区别。

1.参数

javascript:
const browser = await puppeteer.lauch({headless:true})
python:
browser = await launch({'headless':'True'})
or browser = await launch(headless=True)
人对于pypptr 即支持字典也支持Keyword风格的参数。

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

在python中,不能用于方法名。因此,pyppeteer使用Page. queryselector ()/Page. queryselectorall ()/Page.xpath()代替Page.()/Page.$$()/Page.x()。Pyppeteer还为这些方法提供了缩写,Page.J()、Page.JJ()和Page.Jx()。 puppeteer: await page.('#kw')
pypptr:
await page.queryselector('#kw)
or await page.J('#kw')

使用问题

1.Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:8....
解决: pip3 install --upgrade certifi
open /Applications/Python\ 3.6/Install\ Certificates.command

pypptr doc:https://miyakogi.github.io/pyppeteer/index.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容