百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

小白也可以玩的Python爬虫库,收藏一下

itomcoil 2025-08-05 18:54 1 浏览

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,

出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一

下这个传说中的小白神器。

Playwright 是针对 Python 语言的纯自动化工具,它可以通过单个API自动

执行 Chromium,Firefox 和 WebKit 浏览器,连代码都不用写,就能实现

自动化功能。

虽然测试工具 selenium 具有完备的文档,但是其学习成本让一众小白们望而

却步,对比之下 playwright-python 简直是小白们的神器。

Playwright真的适用于Python吗?答案是肯定的,微软对于适用于Python的

Playwright已准备就绪。可能会发生API重大更改。但大概率是这种情况不会

发生,微软还表示仅在他们知道它可以改善您使用新库的体验时,才会可能这

样做。不过微软也提醒尚不支持特定于供应商的API的某些极端情况,例如收集

Chromium跟踪,覆盖率报告等。

1

Playwright介绍

Playwright是一个强大的Python库,仅用一个API即可自动执行

Chromium

Firefox

WebKit等主流浏览器自动化操作,并同时支持以无头

模式、有头模式运行。

Playwright提供的自动化技术是绿色的、功能强大、可靠且快速,支持

Linux

Mac以及Windows操作系统。

还有朋友这么夸:这个项目作为针对 Python 语言纯自动化的工具,解放了代

码,实现了自动化功能,我们来看看怎么用它吧。

2

Playwright使用

安装

Playwright的安装非常简单,两步解决。

安装playwright库

pip install playwright

安装浏览器驱动文件(安装过程稍微有点慢)

python -m playwright install

复制代码

上面两个pip操作分别安装:

安装Playwright依赖库,需要Python3.7+

安装Chromium、Firefox、WebKit等浏览器的驱动文件

录制

使用Playwright无需写一行代码,我们只需手动操作浏览器,它会录制我们的

操作,然后自动生成代码脚本。

下面就是录制的命令codegen,仅仅一行。

命令行键入 --help 可看到所有选项

python -m playwright codegen

复制代码

codegen的用法可以使用--help查看,如果简单使用就是直接在命令后面加上

url链接,如果有其他需要可以添加options。

python -m playwright codegen --help

Usage: index codegen [options] [url]

open page and generate code for user actions

Options:

-

o, --output <file name> saves the generated script to a file

--

target <language> language to use, one of javascript, python, python-async, csharp (default:

-

h, --help display help for command

Examples:

$

codegen

$

codegen --target=python

$

-

b webkit codegen https://example.com

复制代码

options含义:

-

o:将录制的脚本保存到一个文件

--

target:规定生成脚本的语言,有JS和Python两种,默认为Python

-

b:指定浏览器驱动

比如,我要在baidu.com搜索,用chromium驱动,将结果保存为my.py的

python文件。

python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com

复制代码

命令行输入后会自动打开浏览器,然后可以看见在浏览器上的一举一动都会被

自动翻译成代码,如下所示。

结束后自动关闭浏览器,保存生成的自动化脚本到py文件。

from playwright import sync_playwright

def run(playwright):

browser = playwright.chromium.launch(headless=False)

context = browser.newContext()

# Open new page

page = context.newPage()

page.goto("https://www.baidu.com/")

page.click("input[name="wd"]")

page.fill("input[name="wd"]", "jingdong")

page.click("text="京东"")

# Click //a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']

with page.expect_navigation():

with page.expect_popup() as popup_info:

page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")

page1 = popup_info.value

# ---------------------

context.close()

browser.close()

with sync_playwright() as playwright:

run(playwright

此外,playwright还提供了同步和异步的API接口,文档如下。

链接:
https://microsoft.github.io/playwright-python/index.html

同步

下面示例代码:依次打开三个浏览器,前往baidu搜索,截图后退出。

from playwright import sync_playwright

with sync_playwright() as p:

for browser

_

type in [p.chromium, p.firefox, p.webkit]:

browser = browser

_

type.launch()

page = browser.newPage()

page.goto('https://baidu.com/')

page.screenshot(path=f'example-{browser_type.name}.png')

browser.close()

复制代码

异步

异步操作可结合asyncio同时进行三个浏览器操作。

import asyncio

from playwright import async_playwright

async def main():

async with async_playwright() as p:

for browser

_

type in [p.chromium, p.firefox, p.webkit]:

browser = await browser

_

type.launch()

page = await browser.newPage()

await page.goto('http://baidu.com/')

await page.screenshot(path=f'example-{browser_type.name}.png')

await browser.close()

asyncio.get_event_loop().run_until_complete(main())

复制代码

移动端

更厉害的是,playwright还可支持移动端的浏览器模拟。下面是官方文档提供

的一段代码,模拟在给定地理位置上手机iphone 11 pro上的Safari浏览器,

首先导航到maps.google.com,然后执行定位并截图。

from playwright import sync_playwright

with sync_playwright() as p:

iphone_11 = p.devices['iPhone 11 Pro']

browser = p.webkit.launch(headless=False)

context = browser.newContext(

**iphone_11,

locale='en-US',

geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 }

,

permissions=['geolocation']

)

page = context.newPage()

page.goto('https://maps.google.com')

page.click('text="Your location"')

page.screenshot(path='colosseum-iphone.png')

browser.close()

复制代码

另外,还可以配合pytest插件一起使用,感兴趣可以自己试一下。

3

总结

总结

playwright相比已有的自动化测试工具有很多优势,其中有:

支持所有浏览器的

在Chromium,Firefox和WebKit上进行测试。Playwright拥有适用于所

有现代浏览器的完整API覆盖,包括Google Chrome和Microsoft

Edge(带有Chromium),Apple Safari(带有WebKit)和Mozilla

Firefox。

跨平台的WebKit测试。使用Playwright,使用适用于Windows,Linux

和macOS的WebKit构建,测试您的应用程序在Apple Safari中的行为。

在本地和CI上进行测试。

测试手机。使用设备仿真在移动Web浏览器中测试您的自适应Web应用程

序。

无报文头与有报文头。Playwright支持所有浏览器和所有平台的无头(无

浏览器UI)和有头(有浏览器UI)模式。有报文头模式适用于调试,而无报

文头适用于CI / cloud执行。

拥有快速可靠的执行

自动等待APIs。Playwright交互会自动等待直到元素准备就绪。这样可

以提高可靠性并简化测试编写流程。

无超时自动化。Playwright会接收浏览器信号,例如网络请求,页面导

航和页面加载事件,以消除导致睡眠中断的烦恼。

与浏览器上下文保持并行。对于多个并行孤立的浏览器上下文可执行环境

重复使用一个单独的浏览器实例。

弹性元素选择器。Playwright可以依靠面向用户的字符串(例如文本内

容和可访问性标签)来选择元素。这些字符串比紧耦合到DOM结构的选择

器更具弹性。

拥有强大的自动化功能

多个域,页面和框架。Playwright是一种进程外自动化驱动程序,不受

页面内JavaScript执行范围的限制,并且可以自动执行具有多个页面的方

案。

强大的网络控制。Playwright引入上下文范围的网络拦截以便进行终止

或者模拟网络请求。

现代网络功能。Playwright通过插入阴的选择器,地理位置,权

限,Web Worker和其他现代Web API支持Web组件。

涵盖所有场景的能力。支持文件下载和上传,进程外iframe,原生输入事

件,甚至是深色模式。

但它也有局限性

旧版Edge和IE11支持。Playwright不支持旧版Microsoft Edge或

IE11(弃用通知)。支持新的Microsoft Edge(在Chromium上)。

Java语言绑定:Playwright API目前无法在Java或Ruby中使用。这是

暂时的限制,因为Playwright旨在支持任何语言的绑定。

在真实的移动设备上进行测试:Playwright使用桌面浏览器来模拟移动

设备。

虽然有一些局限,但现在playwright 已经更新到了 1.7.0 版本,随着一代代

的更新,系统也会更为完善,作为一款小白神器,为大家省了那么多事情,我

们相信它的未来会越来越好。

相关推荐

python学习教程-第七节内容

函数(重点)基本概念Python函数的语法是编程中的核心概念之一,它允许你将代码块封装为可重复调用的单元。基本语法定义函数:示例参数类型位置参数(PositionalArguments)按参数定义...

Python排序90%人只会用sorted()?这7个高阶技巧让你代码效率翻倍

高效处理数据的关键,往往从掌握排序开始。排序操作在Python编程中的重要性常被低估——直到你面对一个杂乱无章的数据集。作为数据处理的核心操作之一,排序效率直接决定了程序性能和代码可读性。无论你正在清...

第四章:Python函数

4.1函数的定义与调用4.1.1理论知识函数是组织好的、可重复使用的代码块,用于执行特定的任务。它可以提高代码的复用性和可维护性。在Python中,定义函数使用def关键字,其基本语法如下:def...

ArcGIS 一个独立运行的Python程序编写和打包

写代码#coding=utf8#-*-coding:UTF-8-*-importarcpyfromarcpyimportenvimportosimportsys##########...

python入门到脱坑经典案例—计算三角形的面积

下面为大家详细讲解如何用Python计算三角形面积。我们会从最基础的数学公式开始,逐步深入编程实现,并涵盖多个实用版本。以下是完整的教学指南:1.数学原理回顾三角形面积公式:面积=(底边长度...

Python运算技巧:10种计算列表平方的高效方法

1.使用for循环此方法遍历列表中的每个数字,使用**运算符计算其平方,然后将结果添加到新的列表中。2.使用列表推导式此方法使用列表推导式,这是一种更简洁的方式,可以在现有列表的每个项目上执行操作...

墙裂推荐,5个学习Python编程最佳的开源库

学习Python少不了的就是项目,我在GitHUB上找了几个比较好的开源库,大家可以跟着去学习。1、learn-python3这个存储库一共有19本Jupyter笔记本。它涵盖了字符串和条件之类的基础...

使用Python玩转ftplib库:实现ftp文件传输自动化全攻略

大家好!在日常工作中都会使用到ftp功能,用于上传和下载文件等,本章主要介绍Python的标准库ftplib来实现FTP文件传输,帮助我们实现ftp自动化。一、ftplib库核心函数速查表1连接与登...

Python零基础入门学习23:常用第三方库之图像处理库Pillow

注:本文所有代码均经过Python3.7实际运行检验,保证其严谨性。本文约2000字,阅读时间约为4分钟。Pillow库的概述Pillow库是Python最好的图像处理库,可能是使用频率最高的图像处...

Python编程之BeautifulSoup库

#头条创作挑战赛#BeautifulSoup是一个可以从HTML或XML文件中快速提取数据的Python库。它能够通过转从入门到精通Python网络爬虫框架Scrapy38换器实...

Python3 新一代Http请求库Httpx使用(详情版)

我们经常使用Python语言的朋友们都清楚,requests是使用率非常高的HTTP库,甚至更早Python2中使用的是urllib、urllib2,也给我们提供了许多方便的功能。但是自从...

小白也可以玩的Python爬虫库,收藏一下

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。Playwright是...

apscheduler,一个超厉害的 Python 库!

大家好,今天为大家分享一个超厉害的Python库-apscheduler。Github地址:https://github.com/agronholm/apschedulerAPSchedule...

给3D Slicer添加Python第三方插件库

对临床医生或医学影像算法研究人员来说,3DSlicer是不错的临床实践或科研工具。随着人工智能和深度学习技术的普及,python已经作为原型开发和验证的计算机编程语言。3DSlicer自带pyt...

Paramiko:一个非常实用的Python库

前言Python的Paramiko库,它是一个用于实现SSHv2协议的客户端和服务器的库。通过使用Paramiko,我们可以在Python程序中轻松地实现远程服务器的管理、文件传输等功能。特别做智能硬...