Python 的网页自动化工具 DrissionPage 介绍

DrissionPage 介绍

视频教程

不要再学selenium了,DrissionPage更香_哔哩哔哩_bilibili不要再学selenium了,DrissionPage更香DrissionPage官网 https://www.drissionpage.cn/, 视频播放量 56768、弹幕量 12、点赞数 1012、投硬币枚数 503、收藏人数 3162、转发人数 301, 视频作者 Data工程师, 作者简介 code and data is cheap, show me your ppt! ,相关视频:DrissionPage和selenium启动速度对比,地表最强爬虫工具,DrissionPage,秒过RS、AKM,我发现了playwright的bug,最好用的爬虫工具,不用写代码,不用学Python |SpiderFlow介绍,脚本自动化框架现状,pythonGUI自动化操作神器pyautogui,playwright做UI自动化,少有人知道的技巧,效率至少提升300%,你还在使用selenium吗?selenium已经过时了。-DrissionPage,p19爬虫自动化之drissionpage实现随时切换代理ip,Drissionpage库 骚神课堂入门教学https://www.bilibili.com/video/BV1mB4y1o7sT?spm_id_from=333.788.videopod.sections&vd_source=efbefa737a60b2966747a4383eed8b09

DrissionPage 是一个基于 Python 的网页自动化工具,既能控制浏览器,也能收发数据包,还能把两者合而为一。它兼顾了浏览器自动化的便利性和 requests 的高效率,功能强大,内置无数人性化设计和便捷功能,语法简洁而优雅,代码量少,对新手友好。

主要特性

  1. 强大的自研内核:

    • 无 webdriver 特征,无需为不同版本的浏览器下载不同的驱动。

    • 运行速度更快,可以跨 iframe 查找元素,无需切入切出。

    • 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态,无需切换。

    • 可以直接读取浏览器缓存来保存图片,无需用 GUI 点击另存。

    • 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持)。

    • 可处理非 open 状态的 shadow-root。

  2. 亮点功能:

    • 极简的语法规则,集成大量常用功能,代码更优雅。

    • 定位元素更加容易,功能更强大稳定。

    • 无处不在的等待和自动重试功能,使不稳定的网络变得易于控制,程序更稳定,编写更省心。

    • 提供强大的下载工具,操作浏览器时也能享受快捷可靠的下载功能。

    • 允许反复使用已经打开的浏览器,无需每次运行从头启动浏览器,调试超方便。

    • 使用 ini 文件保存常用配置,自动调用,提供便捷的设置,远离繁杂的配置项。

    • 内置 lxml 作为解析引擎,解析速度成几个数量级提升。

    • 使用 POM 模式封装,可直接用于测试,便于扩展。

    • 高度集成的便利功能,从每个细节中体现。

使用示例

安装

首先,通过 pip 安装 DrissionPage 库:

sh复制

复制代码
pip install drissionpage
基本使用
  1. 初始化浏览器:

Python复制

复制代码
from drission_page import DrissionPage

# 初始化 DrissionPage
drission = DrissionPage(browser='chrome')
# 打开一个网页
drission.get('https://example.com')
  1. 元素定位与操作:

Python复制

复制代码
# 查找元素并输入文本
input_element = drission.ele('id', 'username')
input_element.send_keys('my_username')

# 点击按钮
button = drission.ele('css selector', '.submit-button')
button.click()
  1. 截图功能:

Python复制

复制代码
# 截取网页截图
drission.screenshot('screenshot.png')
  1. 数据提取:

Python复制

复制代码
# 获取元素的文本内容
element_text = drission.ele('.headline').text
print(element_text)

# 获取链接的 href 属性
link = drission.ele('.link')
href = link.get_attribute('href')
print(href)
  1. 与其他库的集成:

Python复制

复制代码
from bs4 import BeautifulSoup

# 获取页面源码
html_content = drission.content
# 使用 BeautifulSoup 解析
soup = BeautifulSoup(html_content, 'html.parser')
title = soup.title.text
print(title)

高级功能

  1. 登录状态的维持与数据爬取:

Python复制

复制代码
# 登录网站
drission.get('https://www.example.com/login')
username = drission.ele('id', 'username')
password = drission.ele('id', 'password')
username.send_keys('your_username')
password.send_keys('your_password')
drission.ele('css selector', '.login-button').click()

# 等待页面跳转
drission.wait_for_page_loaded()

# 访问商品页面
drission.get('https://www.example.com/products')

# 提取商品信息
products = drission.ele('css selector', '.product-list').ele_list('css selector', '.product-item')
for product in products:
    name = product.ele('css selector', '.product-name').text
    price = product.ele('css selector', '.product-price').text
    print(f'Product Name: {name}, Price: {price}')

# 关闭浏览器
drission.quit()
  1. 异常处理与日志记录:

Python复制

复制代码
import logging

# 设置日志级别和格式
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

try:
    # 尝试执行可能出错的操作
    drission.get('https://exampleforum.com/nonexistent_page')
except Exception as e:
    # 捕获异常,并记录相关信息
    logging.error(f"Failed to access the page: {e}")
else:
    logging.info("Page accessed successfully.")
finally:
    # 清理资源
    drission.quit()

适用场景

DrissionPage 适用于需要同时进行浏览器自动化和数据抓取的项目,特别是在处理需要登录的网站爬虫任务时,它简化了原本复杂的流程,无需深入分析网络数据包或 JavaScript 代码,开发者可以通过简洁的代码实现自动化的登录过程。这不仅提高了开发效率,还降低了出错的可能性。

希望这些信息对你有所帮助!如果你有其他问题或需要进一步的示例,请告诉我。

相关推荐
“AI国潮设计-小江”8 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
wenwen_chao9 小时前
Python学习与开发资源合集:实用技巧与工具推荐
python
for_ever_love__10 小时前
函数——参数、lambda、*args与作用域
python·函数·大模型开发·编程基础
东莞市云毅网络有限公司10 小时前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
Query*10 小时前
深入浅出LangGraph【一】_基础篇
python·ai·langchain
XiaoMaqqqq10 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
ShyanZh11 小时前
【Python3基础】19-Socket 与 TCP、UDP 编程
python·网络协议·tcp/ip·udp
惊讶的猫11 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
天赐范式12 小时前
天赐范式第186天:让方差开始自洽——Bulmer效应的闭式验证
python·数字生命·天赐范式·动态运行时·遗传方差·bulmer效应
泡茶喝茶写代码12 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据