【Python爬虫实战】DrissionPage 与 ChromiumPage:高效网页自动化与数据抓取的双利器

  🌈个人主页:易辰君-CSDN博客
🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html

目录

前言

一、DrissionPage简介

(一)特点

(二)安装

(三)基本用法

(四)常见操作示例

二、ChromiumPage简介

(一)特点

(二)安装 ChromiumPage 和依赖

(三)基本用法

(四)常见操作

(五)适用场景

(六)ChromiumPage总结

三、总结


前言

在数据抓取与自动化测试领域,处理静态和动态网页的需求日益增加。传统的工具如 requestsselenium 虽然各有优势,但往往需要根据需求在二者之间切换,增加了代码的复杂度。DrissionPage 则创新性地整合了这两种模式,提供了统一的 API,使得静态和动态网页的处理变得更加简洁高效。此外,DrissionPageChromiumPage 模块结合了 Playwright 的强大性能,专为处理复杂的动态网页而设计,让开发者可以在无头浏览器中高效执行 JavaScript、进行模拟操作,为网页自动化和数据抓取提供了理想的解决方案。


一、DrissionPage简介

DrissionPage 是一个基于 Python 的网页自动化和数据抓取库,结合了 requestsselenium 两种工具的优势,为开发者提供了统一的 API,从而简化了静态和动态网页的处理。通过 DrissionPage,可以轻松切换不同的操作模式,适用于从简单的数据抓取到复杂的网页自动化操作。

(一)特点

(1)双模式支持:提供了两种模式,分别是 requests 模式和 selenium 模式。

  • requests 模式:适合加载速度快的静态网页抓取。

  • selenium 模式:适合处理动态网页和需要用户操作的网页,比如点击按钮、表单输入等。

(2)统一 APIDrissionPage 提供的 API 简洁且一致,无论是 requests 还是 selenium 模式,使用的接口基本一致,从而简化了代码的切换和维护。

(3)简化浏览器控制:在 selenium 模式下,可以自动加载页面、执行脚本、模拟用户操作(点击、输入等),便于实现自动化浏览器任务。

(4)智能解析与提取:集成了便捷的 CSS 选择器支持,可轻松定位页面元素,适用于快速数据提取和处理。

(二)安装

使用 pip 进行安装:

pip install drissionPage

此外,如果需要使用 selenium 模式,需要确保系统安装了对应的浏览器驱动(如 Chrome 的 chromedriver),或者使用 webdriver-manager 自动管理驱动。

(三)基本用法

以下是一个快速入门示例,展示如何使用 DrissionPage 切换模式来获取网页内容:

from drissionPage import Drission# 初始化 Drission 对象
drission = Drission()# 使用 requests 模式获取静态网页内容
page = drission.requests.get('https://example.com')
print(page.text)  # 输出网页文本内容# 切换到 selenium 模式,适用于动态网页
drission.change_mode('selenium')
page = drission.get('https://example.com')
print(page.page_source)  # 输出完整的网页源码

(四)常见操作示例

  • 定位和获取元素
# 在 requests 模式下查找元素
element = page.ele('h1')
print(element.text)
  • 自动化操作(在 selenium 模式下)
drission.change_mode('selenium')
page = drission.get('https://example.com')# 点击元素
page.ele('button#submit').click()# 输入文本
page.ele('input#name').input('example text')

二、ChromiumPage简介

ChromiumPageDrissionPage 库中的一个功能模块,专门用于控制基于 Chromium 的无头浏览器(headless browser),可以用于在 Python 中实现浏览器自动化和动态网页的数据抓取。ChromiumPage 使用 Playwright 作为底层引擎,能够高效地加载页面、执行 JavaScript 代码,并且可以无缝地处理动态内容(例如 AJAX 加载的内容)。

(一)特点

  • 高性能:基于 Playwright 引擎的无头浏览器,相比 Selenium 更轻量且性能更好。

  • 跨平台兼容Playwright 支持在 Windows、MacOS 和 Linux 上运行,并且适用于多种浏览器内核(包括 Chromium、Firefox 等)。

  • 处理动态内容:可以执行 JavaScript、模拟点击、输入等操作,适合动态网页的数据抓取。

  • API 简单易用:提供了简洁的 API,使得操作元素、提取数据变得更加直观。

(二)安装 ChromiumPage 和依赖

ChromiumPage 依赖 Playwright,因此在安装 DrissionPage 后,还需要安装 Playwright 并下载浏览器二进制文件:

pip install drissionPage[playwright]
python -m playwright install

(三)基本用法

以下是一个简单的例子,展示了如何使用 ChromiumPage 来访问网页、查找元素和执行自动化操作:

from drissionPage import ChromiumPage# 初始化 ChromiumPage 对象
page = ChromiumPage()# 访问网页
page.get('https://example.com')# 查找元素并获取文本
element = page.ele('h1')
print(element.text)# 模拟点击按钮
page.ele('button#submit').click()# 在输入框中输入文本
page.ele('input#name').input('Hello, World!')

(四)常见操作

定位元素:可以使用 CSS 选择器或 XPath 定位页面中的元素。

# 查找单个元素
element = page.ele('div.classname')# 查找多个元素
elements = page.eles('p')
for e in elements:print(e.text)

获取动态内容:在页面加载完成后,可以轻松获取由 JavaScript 动态生成的内容。

page.get('https://example.com')
content = page.ele('div#dynamic-content').text
print(content)

自动化操作:点击按钮、选择下拉框、输入文本等操作都可以在 ChromiumPage 中实现,比如登录表单填写

page.ele('input#username').input('my_username')
page.ele('input#password').input('my_password')
page.ele('button#login').click()

截图与 PDF 生成

可以轻松保存页面截图和生成 PDF 文件。

# 保存截图
page.screenshot('screenshot.png')# 保存页面为 PDF
page.pdf('page.pdf')

(五)适用场景

  • 数据抓取:适合处理需要 JavaScript 渲染的动态网页。

  • 自动化测试:能够模拟用户的操作,用于自动化测试。

  • 网页自动化操作:适用于登录操作、数据提交等任务。

(六)ChromiumPage总结

ChromiumPage 是一个强大的网页自动化和数据抓取工具,通过与 Playwright 的结合,可以实现高效、跨平台的浏览器自动化。无论是用于数据抓取还是自动化测试,它都提供了丰富的 API,适合需要处理动态网页内容的任务。


三、总结

DrissionPageChromiumPage 的结合,使得 Python 用户能够轻松应对多种网页自动化与数据抓取任务。从简单的数据抓取到复杂的用户交互、从静态页面到动态内容,这两个工具模块通过统一、简洁的 API 极大地降低了开发者的工作量。无论是需要更高性能的动态页面处理,还是简化自动化测试流程,DrissionPage 都是一个强大的利器,尤其在需要高效处理动态内容的场景下,ChromiumPage 的表现尤为出色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/466575.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Word大珩助手:超大数字怎么读?35位数字?69位数字?

俄罗斯日前对谷歌开出了20000000000000000000000000000000000(35位数字)美元的罚款 这一数字远超全球GDP总和,消息一出很快就登上热搜。 面对这样一个庞大的数字,人们不禁好奇,这样的数字该如何读出来? …

Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized

这里是Themberfue 在上一节的最后,我们讨论两个线程同时对一个变量累加所产生的现象 在这一节中,我们将更加详细地解释这个现象背后发生的原因以及该如何解决这样类似的现象 线程安全问题 public class Demo15 {private static int count 0;public …

17、论文阅读:VMamba:视觉状态空间模型

前言 设计计算效率高的网络架构在计算机视觉领域仍然是一个持续的需求。在本文中,我们将一种状态空间语言模型 Mamba 移植到 VMamba 中,构建出一个具有线性时间复杂度的视觉主干网络。VMamba 的核心是一组视觉状态空间 (VSS) 块,搭配 2D 选择…

JavaAPI(1)

Java的API(1) 一、Math的API 是一个帮助我们进行数学计算的工具类私有化构造方法,所有的方法都是静态的(可以直接通过类名.调用) 平方根:Math.sqrt()立方根:Math.cbrt() 示例: p…

【362】基于springboot的在线租房和招聘平台

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统在线租房和招聘平台信息管理难度大,容错率低&…

华为HCIP —— QinQ技术实验配置

一、QinQ的概述 1.1QinQ的概念 QinQ(802.1Q in 802.1Q)技术是一项扩展VLAN空间的技术,通过在原有的802.1Q报文基础上再增加一层802.1Q的Tag来实现。 1.2QinQ封装结构 QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VL…

【数据集】【YOLO】【目标检测】抽烟识别数据集 6953 张,YOLO/VOC格式标注,吸烟检测!

数据集介绍 【数据集】抽烟识别数据集 6953 张,目标检测,包含YOLO/VOC格式标注。数据集中包含1种分类:“smoking”。数据集来自国内外图片网站和视频截图。检测范围园区吸烟检测、禁烟区吸烟检测、监控吸烟检测、无人机吸烟检测等。 主页私…

赛元MCU 脱机烧录步骤

烧录设置 生成烧录配置文件 载入配置文件 下载程序到烧录器中 并 对比 脱机烧录 1、 将SC-LINK 使用外部5V电源供电 2、将烧录口对准主板烧录接口 3、busy亮红灯,进入烧录ing,烧录成功后,OK灯亮蓝灯 注意事项 其中工程校验和 可以作为程序…

leetcode字符串(二)-重复的子字符串

题目 459.重复的子字符串 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例 2: 输入: s "aba" 输出: false示例 3: 输入: …

langchain 4大组件 | AI应用开发

在人工智能的浪潮中,大型语言模型(LLM)逐渐成为推动科技进步的重要力量。而LangChain,作为一个专为LLM应用开发设计的框架,凭借其模块化和高效性,受到了广泛关注。本文将深入浅出地讲解LangChain中的四个基…

TensorFlow|咖啡豆识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 🍺 要求: 自己搭建VGG-16网络框架调用官方的VGG-16网络框架 🍻 拔高(可选): 验证集准…

Jmeter5.X性能测试

Jmeter5.X性能测试 文章目录 Jmeter5.X性能测试一、掌握Http基础协议1.1 浏览器的B/S架构和C/S架构1.2 HyperText Transfer Protocol 超文本传输协议1.3 超文本传输协议Http消息体拆分讲解1.4 HTTP的九种请求方法和响应码介绍1.5 Http请求头/响应头1.6 Http常见请求/响应头cont…

信息安全工程师(81)网络安全测评质量管理与标准

一、网络安全测评质量管理 遵循标准和流程 网络安全测评应严格遵循国家相关标准和流程,确保测评工作的规范性和一致性。这些标准和流程通常包括测评方法、测评步骤、测评指标等,为测评工作提供明确的指导和依据。 选择合格的测评团队 测评团队应具备相关…

AI - 人工智能;Ollama大模型工具;Java之SpringAI(三)

AI - 人工智能;Java之SpringAI(一) AI - 人工智能;Java之SpringAI(二) 一、Ollama 官网:https://ollama.com/ Ollama是一个大模型部署运行工具,在该工具里面可以部署运行各种大模型…

力扣—不同路径(路径问题的动态规划)

文章目录 题目解析算法原理代码实现题目练习 题目解析 算法原理 状态表示 对于这种「路径类」的问题,我们的状态表示⼀般有两种形式: i. 从[i, j] 位置出发。 ii. 从起始位置出发,到[i, j] 位置。 这⾥选择第⼆种定义状态表⽰的⽅式&#xf…

用了Stream后,代码反而越写越丑?

使用 Stream API 可以使代码更加简洁和易读,但如果不恰当地使用或过度使用,确实可能导致代码变得复杂和难以理解。以下是一些常见的问题和改进建议: 常见问题 过度链式调用:过度链式调用 Stream 方法会导致代码行过长&#xff0c…

论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)

中文标题:简化目标检测的无源域适应:有效的自我训练策略和性能洞察 原文标题:Simplifying Source-Free Domain Adaptation for Object Detection: Effective Self-Training Strategies and Performance Insights 此篇文章为论文速读&#xff…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。循环播放,QT connect 细节,

在前面,我们总结一下前面的代码。 在 FactoryModeForAVFrameShowSDL 构造函数中 init SDL。 通过 QT timerevent机制,通过startTimer(10);每隔10ms,就会调用timerEvent事件。 在timerEvent事件中,真正的去 读取数据&#xff0c…

企业文件加密要怎么做?好用的10款企业文件加密软件排行榜!

在现代信息化的工作环境中,企业数据安全面临着越来越多的威胁。尤其是当涉及到敏感文件和商业机密时,如何保护这些数据不被泄露或遭受恶意攻击显得尤为重要。企业文件加密成为了保护企业信息安全的关键手段。本文将探讨如何进行企业文件加密,…

20241107给野火LubanCat1-BTB刷Ubuntu的预编译固件并点亮USB接口的热像仪AT600

20241107给野火LubanCat1-BTB刷Ubuntu的预编译固件并点亮USB接口的热像仪AT600 2024/11/7 20:08 缘起:需要使用RK3566的linux/Buildroot系统。 将 鲁班猫的 云盘资料下载之后,发现里面没有Buildroot的预编译固件。 火速联系 淘宝客服!转技术支…