继续创作,加快生长!这是我参与「日新计划 10 月更文挑战」的第15天,点击查看活动详情

⛳️ 实战场景

上一篇博客我们初次触摸年青的自动化模块 playwright,惊奇于其代码录制功能,今日我们接着学习一下,其 API 相关常识。

正式学习前,先把根底示例代码呈现给我们。

from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("http://example.com")
    print(page.title())
    browser.close()

留意上述代码使用的不是无头浏览器,运转代码得到恳求站点的标题,下面继续对代码进行扩展。

⛳️ 实现浏览器截图

经过浏览器翻开站点之后,能够对网页默许展现区域进行截图操作,代码如下:

from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("http://example.com")
    page.screenshot(path="example.png")
    browser.close()

在运转目录生成如下图片:

嗨,各位Python程序员,放弃selenium,试试年轻的Playwright如何?

⛳️ 将截图代码优化为异步形式

上述截图代码为同步形式,能够进行简单的修正,然后调整为异步形式。

import asyncio
from playwright.async_api import async_playwright
async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        page = await browser.new_page()
        await page.goto('http://example.com')
        await page.screenshot(path='example.png')
        await browser.close()
asyncio.get_event_loop().run_until_complete(main())

这儿一定要留意 async_playwrightsync_playwright 导入形式,互联网很多博客这儿都写过错,也不知道他们的代码是怎样运转起来的,对比代码如下所示:

from playwright.async_api import async_playwright # 异步导入
from playwright.sync_api import sync_playwright # 同步导入

⛳️ 模拟手机端拜访

模拟手机操作用到的核心办法如下所示:

  • p.devices[phone_name]:选择设备名,能够从谷歌浏览器的开发者东西中进行选择,截图在代码后。
  • browser.new_context():初始化浏览器的时候,能够进行参数装备。
from playwright.sync_api import sync_playwright # 同步导入
with sync_playwright() as p:
    phone_name = 'iPhone 13'
    iphone_13 = p.devices[phone_name]
    browser = p.webkit.launch(headless=False)
    context = browser.new_context(
        **iphone_13,
        locale='zh-CN'
    )
    page = context.new_page()
    page.goto('https://baidu.com')
    page.screenshot(path=f'{phone_name}.png')
    # browser.close()

能够选择的设备称号(包括但不限于!)

嗨,各位Python程序员,放弃selenium,试试年轻的Playwright如何?
运转上述代码,能够模拟手机拜访效果。

本篇博客最终补充的常识点是 browser.new_context() 办法的具体参数说明(全网首发)。

  • accept_downloads:布尔类型,是否自动下载所有附件,默许为 True
  • base_url:根途径,这个参数要合作 goto()route() 办法使用;
  • bypass_csp:布尔类型,跨域攻击装备;
  • device_scale_factor:设备比例基数,默许是 1.0
  • extra_http_headers:字典目标,每个恳求发送的附加 HTTP 头的目标;
  • geolocation:地理位置,字典格式,包括经纬度,以及精度;
  • ignore_https_errors:发送网络恳求时是否忽略 HTTPS 过错;
  • is_mobile:是否考虑 meta-viewport 标记并启用触摸事件,不支撑火狐;
  • java_script_enabled:是否支撑 JS;
  • locale :指定用户区域设置;
  • no_viewport:不强制固定窗口,允许在标题形式下调整窗口大小;
  • offline:是否离线形式;
  • proxy:代理设置;
  • storage_state:用户状态设置,例如 cookiesorigins
  • user_agent:用户代理设置;
  • viewport:窗口大小,默许 1280*720,也能够经过字典设置宽度和高度。

你正在阅览 【梦想橡皮擦】 的博客 阅览完毕,能够点点小手赞一下 发现过错,直接评论区中纠正吧 橡皮擦的第 730 篇原创博客