爬虫主动化(DrissionPage)

打印 上一主题 下一主题

主题 871|帖子 871|积分 2613

目录

?一.介绍:
下载DrissionPage,还是我们认识的pip:
环境预备:
?二.基本代码:
它对于的导包和类使用:
窗口的设置:
和获取的页面的滑动:
3.进一步认识DrissionPage:
浏览器可以多开:
监听网络数据:
四.反监测:
正常模式下:
无头模式:
五.总结:

一.介绍:


dDrissionPage官网?? 概述[这里是图片003]https://www.drissionpage.cn/
来自官网的介绍:
DrissionPage是一个基于 Python 的网页主动化工具。
既能控制浏览器,也能收发数据包,还能把两者合而为一。
下载DrissionPage,还是我们认识的pip:

   pip install DrissionPage
  环境预备:



  • 操作系统:Windows,Linux,Mac
  • python版本:3.6及以上
  • 浏览器:Chromium内核
二.基本代码:

  1. from DrissionPage import ChromiumPage
  2. page = ChromiumPage()
  3. page.get('https://www.baidu.com/')
复制代码
和主动化一样自己打开浏览器:
它对于的导包和类使用:

  1. # ChromiumPage 只控制浏览器,不能收发数据包
  2. from DrissionPage import ChromiumPage
  3. # SessionPage 只用于收发数据包,不能控制浏览器
  4. from DrissionPage import SessionPage
  5. # 浏览启动参数管理器,用于控制浏览器启动参数
  6. from DrissionPage import DriverOptions
  7. # Session对象启动参数管理器,用于控制Session对象启动参数
  8. from DrissionPage import SessionOptions
  9. # 动作链类,用于模拟一连串鼠标键盘动作
  10. from DrissionPage import ActionChains
复制代码
窗口的设置:

  1. page.set.window.maximized()    # 窗口最大化
  2. page.set.window.minimized()    # 窗口最小化
  3. page.set.window.fullscreen()    # 用于使窗口切换到全屏模式
  4. page.set.window.normal()    # 用于使窗口切换到普通模式
  5. page.set.window.size(500, 500)    # 用于设置窗口大小。
  6. page.set.window.location(500, 500)    # 用于设置窗口位置
复制代码
和获取的页面的滑动:

  1. page.scroll.to_top()    # 用于滚动页面到顶部,水平位置不变
  2. page.scroll.to_bottom()    # 用于滚动页面到底部,水平位置不变
  3. page.scroll.to_half()    # 用于滚动页面到垂直中间位置,水平位置不变
  4. page.scroll.to_rightmost()    # 用于滚动页面到最右边,垂直位置不变
  5. page.scroll.to_leftmost()    # 用于滚动页面到最左边,垂直位置不变
  6. page.scroll.to_location(300, 50)    # 用于滚动页面到滚动到指定位置
  7. page.scroll.up(30)    # 用于使页面向上滚动若干像素,水平位置不变
  8. page.scroll.down(30)    # 用于使页面向下滚动若干像素,水平位置不变
  9. page.scroll.right(30)    # 用于使页面向右滚动若干像素,垂直位置不变
  10. page.scroll.left(30)    # 用于使页面向左滚动若干像素,垂直位置不变
复制代码
3.进一步认识DrissionPage:

浏览器可以多开:

每个浏览器的端口号不一样,和文件地址也不能一样。
  1. from DrissionPage import Chromium, ChromiumOptions
  2. Ch1 = ChromiumOptions().set_local_port('端口号').set_user_data_path('')#1
  3. Ch2 = ChromiumOptions().set_local_port().set_user_data_path('')#2
  4. browser1 = Chromium(Ch1)
  5. 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 协议,拥有较强的反检测机制,目前不需要做任何反检测的操作就可以绕过国表里绝大多数的网站主动化检测。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表