无头铬/铬自动化图书馆(非官方木偶港)
pyppeteer2的Python项目详细描述
侏儒2
非官方的Python港口 puppeteerJavaScript(无头) chrome/chrome浏览器自动化库。在
- 免费软件:MIT许可证(包括在Apache2.0许可证下分发的作品)
- 文档:https://miyakogi.github.io/pyppeteer
安装
pyppeeer需要python3.6+。 (实验上支持Python3.5)
从PyPI按pip安装:
python3 -m pip install pyppeteer
或从github安装最新版本:
^{pr2}$使用
Note: When you run pyppeteer first time, it downloads a recent version of Chromium (~100MB). If you don't prefer this behavior, run
pyppeteer-install
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())
pyppeter和puppeter有几乎相同的API。 中列出了更多API document。在
Puppeteer's document 和troubleshooting对pyppeeer用户也很有用。在
木偶手与侏儒的区别
pyppeiteer与puppeter相似,但pyppeter与python之间有些不同 而JavaScript让它变得很困难。在
这就是木偶和侏儒的区别。在
选项的关键字参数
puppeter使用object(python中的dictionary)将选项传递给 函数/方法。pyppeeer接受字典和关键字参数 选项。在
字典样式选项(类似于puppeter):
browser=awaitlaunch({'headless':True})
关键字参数样式选项(更像python,不是吗?)公司名称:
browser=awaitlaunch(headless=True)
元素选择器方法名($
->;querySelector
)
在python中,$
不能用于方法名。
所以Pyppeier使用
Page.querySelector()
/Page.querySelectorAll()
/Page.xpath()
而不是
Page.$()
/Page.$$()
/Page.$x()
。Pyppeteer也有这些的简称
方法Page.J()
,Page.JJ()
,和{
Page.evaluate()
和Page.querySelectorEval()
puppeter版本的evaluate()
采用JavaScript原始函数或字符串
JavaScript表达式,但pyppeeer使用JavaScript字符串。JavaScript
字符串可以是函数或表达式。Pyppeteer尝试自动检测
字符串是函数或表达式,但有时会失败。If表达式
字符串被视为函数并引发错误,添加force_expr=True
选项,
强制Pyppeier将字符串视为表达式。在
获取页面内容的示例:
content=awaitpage.evaluate('document.body.textContent',force_expr=True)
获取元素内部文本的示例:
element=awaitpage.querySelector('h1')title=awaitpage.evaluate('(element) => element.textContent',element)
未来计划
- 木偶师的追赶发展
- 不打算添加puppeter没有的原始API
学分
此包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。在
- 项目
标签: