zoukankan      html  css  js  c++  java
  • python-pyppeteer模块使用汇总

    一.简单代码示例

    import asyncio
    from pyppeteer import launch
    
    async def main():
        browser = await launch()
        page = await browser.newPage()    #打开一个新页面
        await page.goto('https://www.baidu.com/')  #访问百度
        await page.screenshot({'path': 'baidu.png'})  #截图并存储
        await browser.close()
    
    asyncio.get_event_loop().run_until_complete(main())
    

    二.page对象的方法

    await page.方法

    1.设置相关

    setUserAgent(str)

    设置UserAgent

    setCookie(cookie1, cookie2.......)

    设置cookie

    cookies 应该是包含这些字段的字典:
    name(str):必填
    value(str):必填
    url (STR)
    domain (STR)
    path (STR)
    expires (数字):Unix时间,以秒为单位
    httpOnly (布尔)
    secure (布尔)
    sameSite(str):'Strict'或'Lax'
    

    2.页面相关

    goto(url)

    访问网页

    reload()

    页面加载完毕

    goBack()/goForward()

    页面后退/页面前进

    3.执行js

    evaluate(js_str)

    对于某个元素执行js

    4.截图

    screenshot(dict)

    dictkey

    path(str):保存图像的文件路径。屏幕截图类型将从文件扩展名中推断出来。 #基本上写个这个就够了
    
    type(str):指定屏幕截图类型,可以是jpeg或 png。默认为png。
    
    quality(int):图像的质量,在0-100之间。不适用于png图像。
    
    fullPage(bool):如果为true,请截取完整的可滚动页面。默认为False。
    
    clip(字典):指定页面剪切区域的对象。此选项应包含以下字段:
    
    x (int):剪辑区域左上角的x坐标。
    
    y (int):剪辑区域左上角的y坐标。
    
    width (int):剪切区域的宽度。
    
    height (int):剪切区域的高度。
    
    omitBackground (bool):隐藏默认的白色背景并允许捕获具有透明度的屏幕截图。
    

    5.保存pdf

    pdf(dict)

    返回: 返回生成的PDF bytes对象。

    path (str):保存PDF的文件路径。
    scale(float):网页渲染的比例,默认为1。
    displayHeaderFooter(bool):显示页眉和页脚。默认为False。
    headerTemplate(str):打印标题的HTML模板。应该是有效的HTML标记与以下类。
    date:格式化的打印日期
    title:文件名
    url:文件位置
    pageNumber:当前页码
    totalPages:文档中的总页数
    footerTemplate(str):打印页脚的HTML模板。应该使用相同的模板headerTemplate。
    printBackground(bool):打印背景图形。默认为 False。
    landscape(bool):纸张方向。默认为False。
    pageRanges(字符串):要打印的纸张范围,例如“1-5,8,11-13”。默认为空字符串,表示所有页面。
    format(str):纸张格式。如果设置,优先于 width或height。默认为Letter。
    width (str):纸张宽度,接受标有单位的值。
    height (str):纸张高度,接受标有单位的值。
    margin(字典):纸张边距,默认为None。
    top (str):上边距,接受标有单位的值。
    right (str):右边距,接受标有单位的值。
    bottom (str):底部边距,接受标有单位的值。
    left (str):左边距,接受标有单位的值。
    

    6.获取内容

    content()

    页面文本

    print(await page.evaluate('document.body.textContent', force_expr=True)) 这样也行
    

    cookies()

    页面cookies

    title()

    标题

    7.获取元素

    返回都是ElementHandle或者None

    print(await page.querySelector('div选择器'))    #获取第一个
    print(await page.querySelectorAll("CSS选择器"))  #获取全部
    
    querySelectorEval('css选择器','js_str','前面js需要的参数')  #获取第一个并对其执行js
    querySelectorAllEval('css选择器','js_str','前面js需要的参数') #获取全部并对其执行js
    
    await page.xpath('xpath选取器')
    

    8.等待方式

    # await page.waitForXPath('h3', timeout=300)
    # await page.waitForNavigation(waitUntil="networkidle0")
    # await page.waitForFunction('document.getElementByTag("h3")')
    # await page.waitForSelector('.t')
    # await page.waitFor('document.querySelector("#t")')
    # await page.waitForNavigation(waitUntil='networkidle0')
    # await page.waitForFunction('document.querySelector("").inner‌​Text.length == 7')
    

    9.获取ElementHandle里的属性或者文本

    await (await ElementHandle_obj.getProperty('属性')).jsonValue()
    await (await ElementHandle_obj.getProperty('textContent')).jsonValue()  #文本
    

    10.与浏览器交互

    request_html中render操

    可以参考这个应为request_html就是封装了pyppeteer

  • 相关阅读:
    Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
    两种为wangEditor添加拖拽调整高度的方式:CSS3和jQuery UI
    使用JavaScript把页面上的表格导出为Excel文件
    UEditor的jQuery插件化
    wangEditor的jQuery插件化
    使元素相对于窗口或父元素水平垂直居中的几种方法
    在ASP.NET Web Forms中使用页面导出伪xls Excel表格
    全表对比增量抽取
    Kettle日常使用汇总整理
    maven项目的标准目录结构
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11972476.html
Copyright © 2011-2022 走看看