爬虫自动化(DrissionPage)
目录
一.介绍:
下载DrissionPage,还是我们熟悉的pip:
环境准备:
二.基本代码:
它对于的导包和类使用:
窗口的设置:
和获取的页面的滑动:
3.进一步认识DrissionPage:
浏览器可以多开:
监听网络数据:
四.反监测:
正常模式下:
无头模式:
五.总结:
一.介绍:
dDrissionPage官网✨️ 概述https://www.drissionpage.cn/
来自官网的介绍:
DrissionPage® 是一个基于 Python 的网页自动化工具。
既能控制浏览器,也能收发数据包,还能把两者合而为一。
下载DrissionPage,还是我们熟悉的pip:
pip install DrissionPage
环境准备:
- 操作系统:Windows,Linux,Mac
- python版本:3.6及以上
- 浏览器:Chromium内核
二.基本代码:
from DrissionPage import ChromiumPage
page = ChromiumPage()
page.get('https://www.baidu.com/')
和自动化一样自己打开浏览器:
它对于的导包和类使用:
# ChromiumPage 只控制浏览器,不能收发数据包
from DrissionPage import ChromiumPage
# SessionPage 只用于收发数据包,不能控制浏览器
from DrissionPage import SessionPage
# 浏览启动参数管理器,用于控制浏览器启动参数
from DrissionPage import DriverOptions
# Session对象启动参数管理器,用于控制Session对象启动参数
from DrissionPage import SessionOptions
# 动作链类,用于模拟一连串鼠标键盘动作
from DrissionPage import ActionChains
窗口的设置:
page.set.window.maximized() # 窗口最大化
page.set.window.minimized() # 窗口最小化
page.set.window.fullscreen() # 用于使窗口切换到全屏模式
page.set.window.normal() # 用于使窗口切换到普通模式
page.set.window.size(500, 500) # 用于设置窗口大小。
page.set.window.location(500, 500) # 用于设置窗口位置
和获取的页面的滑动:
page.scroll.to_top() # 用于滚动页面到顶部,水平位置不变
page.scroll.to_bottom() # 用于滚动页面到底部,水平位置不变
page.scroll.to_half() # 用于滚动页面到垂直中间位置,水平位置不变
page.scroll.to_rightmost() # 用于滚动页面到最右边,垂直位置不变
page.scroll.to_leftmost() # 用于滚动页面到最左边,垂直位置不变
page.scroll.to_location(300, 50) # 用于滚动页面到滚动到指定位置
page.scroll.up(30) # 用于使页面向上滚动若干像素,水平位置不变
page.scroll.down(30) # 用于使页面向下滚动若干像素,水平位置不变
page.scroll.right(30) # 用于使页面向右滚动若干像素,垂直位置不变
page.scroll.left(30) # 用于使页面向左滚动若干像素,垂直位置不变
3.进一步认识DrissionPage:
浏览器可以多开:
每个浏览器的端口号不一样,和文件地址也不能一样。
from DrissionPage import Chromium, ChromiumOptions
Ch1 = ChromiumOptions().set_local_port('端口号').set_user_data_path('')#1
Ch2 = ChromiumOptions().set_local_port().set_user_data_path('')#2
browser1 = Chromium(Ch1)
browser2 = Chromium(Ch2)
监听网络数据:
-
注意:要先启动监听,再执行动作,
listen.start()
之前的数据包是获取不到的; -
等待并获取:
-
等待并获取:
from DrissionPage import ChromiumPage
page = ChromiumPage()
page.get('网页地址') # 访问网址,这行产生的数据包不监听
page.listen.start('gitee.com/explore') # 开始监听,指定获取包含该文本的数据包(部分url)
for _ in range(5):
page('@rel=next').click() # 点击下一页
res = page.listen.wait() # 等待并获取一个数据包
print(res.url) # 输出数据包url
print(res.response.headers) # 输出响应头
print(res.response.statusText) # 输出响应状态码
print(res.response.body) # 输出响应内容
四.反监测:
在 Selenium、Playwright 、Playwright 的使用中,我们知道了自动化工具容易被网站检测,也提供了一些绕过检测的方案。这里我们介绍一下 DrissionPage 的反检测方案:
正常模式下:
无头模式:
可以发现,没有做任何反检测的操作,都不会被检测到,就连使用无头模式也只有 userAgent 有问题,不过我们 co.set_user_agent() 设置一下就可以了,虽然这些只是最基本的检测机制,但也够用了
五.总结:
DrissionPage 语法简洁,使用方便,底层基于 CDP 协议,拥有较强的反检测机制,目前不需要做任何反检测的操作就可以绕过国内外绝大多数的网站自动化检测。