DrissionPage:简化Web自动化与数据抓取的强大工具

12,069次阅读
没有评论

共计 2244 个字符,预计需要花费 6 分钟才能阅读完成。

烛光里的愿
2024-02-23 11:42:07
浏览数 (9787)

DrissionPage 是一个基于 Python 的网页自动化工具,集成了 Selenium 和 Requests,提供了无缝切换和简化的接口,使开发者在 Web 自动化和数据抓取任务中能够高效、灵活地操作。无论是渲染 JavaScript 生成的动态内容还是静态页面数据抓取,DrissionPage 都能轻松胜任。本文将介绍 DrissionPage 的特点和安装方法,并提供示例代码,展示其在会话模式登录和页面数据抓取方面的应用。

DrissionPage 是什么?

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

DrissionPage:简化 Web 自动化与数据抓取的强大工具

特点

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

安装方法

通过 pip 安装 DrissionPage,安装命令如下:

pip install DrissionPage

示例代码

  • 登录会话模式: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()
  • 抓取页面数据:在任何模式下,DrissionPage 都提供了简单的方法来抓取和处理页面数据:
    from DrissionPage import SessionPage
    
    # 创建页面对象
    page = SessionPage()
    
    # 爬取 3 页
    for i in range(1, 4):
        # 访问某一页的网页
        page.get(f'https://gitee.com/explore/all?page={i}')
        # 获取所有开源库  元素列表
        links = page.eles('.title project-namespace-path')
        # 遍历所有  元素
        for link in links:
            # 打印链接信息
            print(link.text, link.link)

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

高级应用

接下来,我们深入一项需要一定开发经验和难度的功能:使用 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 是一款强大的网页自动化工具,通过集成 Selenium 和 Requests,它简化了 Web 自动化和数据抓取的流程,并提供了统一、简洁的接口。无论是处理动态内容抓取还是简单的页面数据获取,DrissionPage 都表现出灵活性和高效性。通过示例代码,我们展示了 DrissionPage 在会话模式登录和页面数据抓取方面的应用,以及如何利用其在 Web 模式下执行复杂的交互操作。对于开发者来说,DrissionPage 是一个值得尝试的工具,可以提高工作效率并降低编码复杂度。

原文地址: DrissionPage:简化 Web 自动化与数据抓取的强大工具

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-19发表,共计2244字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)