pyppeteer的使用

一.什么是pyppeteer?

pyppeteer是一个web自动化测试工具,由chromium浏览器和asyncio框架两个部分组成,它与selenium相比,虽然支持的浏览器相对比较单一,但是在运行效率和安装的过程都要比selenuim高,而且能防止被一些高级网址检测到。

二.安装pyppeteer

pip install pyppeteer

安装完pyppeteer库后还需要安装chromium浏览器,可以通过以下命令进行安装,即使不安装也没事,在第一次运行pyppeteer的时候会自动进行安装的。

pyppeteer-install

 三.pyppeteer的使用

参考官方API文档进行使用:

API Reference — Pyppeteer 0.0.25 documentation

官网中用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'})
    await browser.close()
if __name__ == '__main__':
    asyncio.run(main())

如果要让浏览器显示可以在launch()中添加参数,Pyppeteer 接受选项的字典和关键字参数。如下:

#字典参数

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

#关键词参数

browser = await launch( headless=False )

如果要取消掉左上角的chrome正受自动测试软件的控制,可以添加以下参数

 browser = await launch( { 'headless' : False , 'args' : [ '--disable-infobars' ] } )

 打开的chromium的视口太小可以通过setViewPort()进行设置

设置视口。

可用的选项是:

  • width(int): 以像素为单位的页面宽度。
  • height(int): 以像素为单位的页面高度。
  • deviceScaleFactor(浮动):默认为 1.0。
  • isMobile(bool): 默认为False.
  • hasTouch(bool): 默认为False.
  • isLandscape(bool): 默认为False

想让窗口直接最大化可以将--window-size替换成--start-maximized

width,height = 1900,1500

browser = await launch( { 'headless' : False , 'args' : [ f ' --window-size={ width },{ height } ' ] } )

await page.setViewport ( { 'width' : width , 'height' : height } )

防止被检查,大型网站都是通过用window.navigator.webdriver来进行检测的,使用JavaScript将它设置为false

await page.evaluate( ' ' ' ( ) =>{ Object.defineProperties ( navigator , { webdriver : { get : ( )  => false } } ) } ' ' ' )

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值