DrissionPage,一个超酷的python库

DrissionPage,一个超酷的python库

大家好,我是木木。今天给大家分享一个神奇的 Python

DrissionPage。这是一个集成了Selenium和Requests的库,类似 selenuium 的网页自动化工具。这是一个基于 Python 的网页自动化工具,支持 Chromium 内核浏览器。它将控制浏览器和收发请求两大功能合二为一,并提供了统一、简洁的接口。无论是需要渲染JavaScript生成的动态内容,还是简单的静态页面数据抓取,DrissionPage都能轻松应对。这个库的设计哲学是提高开发者在Web自动化任务中的工作效率,同时降低编码复杂度。

DrissionPage,一个超酷的python库
图源网络

特点

  1. 无缝切换
    1. DrissionPage 允许开发者在Selenium的浏览器驱动和Requests的会话之间无缝切换,这意味着您可以在需要渲染页面时使用Selenium,而在需要高速数据抓取时使用Requests。
  2. 简化的接口
    1. 通过提供统一的接口,DrissionPage简化了Web自动化和数据抓取的流程。开发者不需要分别学习和使用两个库的复杂API,从而节省了学习和开发时间。
  3. 灵活高效
    1. DrissionPage 设计考虑到了灵活性和效率,不仅支持动态内容的抓取,还能处理大量的数据抓取任务。其性能优化和易用性使其成为处理Web自动化和数据抓取任务的强大工具。

最佳实践

安装方法

首先,您需要通过pip安装DrissionPage,安装命令如下:

pip install DrissionPage

接下来,我将演示该库两个易于上手的功能:切换会话模式和抓取页面数据。

示例代码

  1. 登录会话模式

DrissionPage允许您在Driver模式下进行登录,可以自行替换帐号密码来进行登录体验:

from DrissionPage import ChromiumPage

# 创建页面对象,并启动或接管浏览器
page = ChromiumPage()
# 跳转到登录页面
page.get('https://gitee.com/login')

# 定位到账号文本框,获取文本框元素
ele = page.ele('#user_login')
# 输入对文本框输入账号
ele.input('您的账号')
# 定位到密码文本框并输入密码
page.ele('#user_password').input('您的密码')
# 点击登录按钮
page.ele('@value=登 录').click()
  1. 抓取页面数据

在任何模式下,DrissionPage都提供了简单的方法来抓取和处理页面数据:

from DrissionPage import SessionPage

# 创建页面对象
page = SessionPage()

# 爬取3页
for i in range(14):
    # 访问某一页的网页
    page.get(f'https://gitee.com/explore/all?page={i}')
    # 获取所有开源库<a>元素列表
    links = page.eles('.title project-namespace-path')
    # 遍历所有<a>元素
    for link in links:
        # 打印链接信息
        print(link.text, link.link)

这两段代码展示了如何使用DrissionPage进行会话模式的登录和页面数据的抓取。这种灵活性和简化的接口让它在Web自动化和数据抓取领域非常有用。

DrissionPage,一个超酷的python库
图源网络

高级应用

接下来,我们深入一项需要一定开发经验和难度的功能:使用Selenium模式进行复杂的交互操作。

示例代码

# 首先,我们导入页面对象WebPage类。
from DrissionPage import WebPage

# 接下来,我们创建一个WebPage对象。
page.get('https://gitee.com/explore')
# 然后控制浏览器访问 gitee。
page('#q').input('DrissionPage')
page('t:button@tx():搜索').click()
page.wait.load_start()

# 抓取交互后的页面数据
# 对ele元素进行模拟点击,如判断被遮挡也会点击
ele.click()

# 用js方式点击ele元素,无视遮罩层
ele.click(by_js=True)

# 如元素不被遮挡,用模拟点击,否则用js点击
ele.click(by_js=None)

通过这段代码,您可以在Web模式下执行复杂的页面交互,如点击按钮、填写表单等操作,并抓取交互后的页面数据。

DrissionPage通过其强大的功能和简化的操作,为Web自动化和数据抓取项目提供了极大的便利和效率。希望本次分享能帮助您在项目中有效利用这个工具。


原文始发于微信公众号(木木夕咦):DrissionPage,一个超酷的python库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/228857.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!