赞
踩
前三期文章中已经介绍到了 Selenium 与 Playwright 、Pyppeteer 的使用方法,它们的功能都非常强大。而本期要讲的 DrissionPage 更为独特,强大,而且使用更为方便,目前检测少,强烈推荐!!!
这里推荐观看十一姐 B 站 DrissionPage 系列视频,很详细:
合集·爬虫自动化 DrissionPage 实战案例:
https://space.bilibili.com/308704191/channel/collectiondetail?sid=1947582
DrissionPage 相关资料:
官方文档:https://www.drissionpage.cn
Drissionpage “姊妹库”:https://gitee.com/haiyang0726/SaossionPage
DrissionPage 是一个基于 python 的网页自动化工具。它既能控制浏览器,也能收发数据包,还能把两者合而为一。可兼顾浏览器自动化的便利性和 requests 的高效率。它功能强大,内置无数人性化设计和便捷功能。它的语法简洁而优雅,代码量少,对新手友好。
支持系统:Windows、Linux、Mac;
python 版本:3.6 及以上;
支持应用:Chromium 内核浏览器(如 Chrome、Edge),electron 应用;
本库采用全自研的内核,内置了无数实用功能,对常用功能作了整合和优化,对比 selenium,有以下优点:
open
状态的 shadow-root。除了以上优点,本库还内置了无数人性化设计。
# 安装
pip install DrissionPage
# 升级最新稳定版
pip install DrissionPage --upgrade
# 指定版本升级
pip install DrissionPage==4.0.0b17
CentOS 请参考这篇文章:
linux 部署说明:https://blog.csdn.net/sinat_39327967/article/details/132181129
Ubuntu 请参考这篇文章:
DrissionPage 在 Ubuntu Linux 的使用:https://zhuanlan.zhihu.com/p/674687748
from DrissionPage import ChromiumPage, ChromiumOptions co = ChromiumOptions().set_paths(browser_path=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe") # 1、设置无头模式:co.headless(True) # 2、设置无痕模式:co.incognito(True) # 3、设置访客模式:co.set_argument('--guest') # 4、设置请求头user-agent:co.set_user_agent() # 5、设置指定端口号:co.set_local_port(7890) # 6、设置代理:co.set_proxy('http://localhost:1080') page = ChromiumPage(co) page.get('https://gitee.com/login', retry=3, timeout=15, interval=2) # 定位到账号文本框,获取文本框元素 ele = page.ele('#user_login') # 输入对文本框输入账号 ele.input('您的账号') # 定位到密码文本框并输入密码 page.ele('#user_password').input('您的密码') # 点击登录按钮 page.ele('@value=登 录').click()
获取浏览器路径的方法:
chrome://version
(Edge 输入 edge://version
),回车该方法用于跳转到一个网址。当连接失败时,程序会进行重试:
本库提供一套简洁易用的语法,用于快速定位元素,并且内置等待功能、支持链式查找,减少了代码的复杂性。
同时也兼容 css selector、xpath、selenium 原生的 loc 元组。
定位元素大致分为三种方法:
# 输入
page.ele('xpath://input[@id="bindMobileFree"]').input("123456789")
# 点击
page.ele('x://span[@class="getYZM_btn"]').click()
from DrissionPage import SessionPage
page = SessionPage()
page.get('https://gitee.com/explore')
# 获取包含“全部推荐项目”文本的 ul 元素
ul_ele = page.ele('tag:ul@@text():全部推荐项目')
# 获取该 ul 元素下所有 a 元素
titles = ul_ele.eles('tag:a')
# 遍历列表,打印每个 a 元素的文本
for i in titles:
print(i.text)
foot = page.ele('#footer-left') # 用 id 查找元素
first_col = foot.ele('css:>div') # 使用 css selector 在元素的下级中查找元素(第一个)
lnk = first_col.ele('text:命令学') # 使用文本内容查找元素
text = lnk.text # 获取元素文本
href = lnk.attr('href') # 获取元素属性值
print(text, href, '\n')
# 简洁模式串联查找
text = page('@id:footer-left')('css:>div')('text:命令学').text
print(text)
✅️️ 页面对象的等待方法:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。