python 比webdriver更好用的ChromiumPage

优点(目前发现的):

  1. 不用配合selenium
  2. 不用下载对应浏览器的webdriver,不用对应浏览器版本
  3. 不用设置webdriver路径之类的设置
  4. 目前没看到有出现像webdriver类似的浏览器被控制的提示,使用过程中好像也没被检测出来。
  5. 每次不会重新打开一个浏览器,不会关闭。
  6. 控制滚动条更方便,不用像webdriver写js去执行,效果还不好。
  7. 可以监控网络请求,比webdriver方便多了。

chromiumPage介绍:

DrissionPage 是一个基于 python 的网页自动化工具。它既能控制浏览器,也能收发数据包,还能把两者合而为一。可兼顾浏览器自动化的便利性和 requests 的高效率。它功能强大,内置无数人性化设计和便捷功能。它的语法简洁而优雅,代码量少,对新手友好。

  • 支持系统:Windows、Linux、Mac;
  • python 版本:3.6 及以上;
  • 支持应用:Chromium 内核浏览器(如 Chrome、Edge),electron 应用;

本库采用全自研的内核,内置了无数实用功能,对常用功能作了整合和优化,对比 selenium,有以下优点:

  • 无 webdriver 特征;
  • 无需为不同版本的浏览器下载不同的驱动;
  • 运行速度更快;
  • 可以跨 iframe 查找元素,无需切入切出;
  • 把 iframe 看作普通元素,获取后可直接在其中查找元素,逻辑更清晰;
  • 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态,无需切换;
  • 可以直接读取浏览器缓存来保存图片,无需用 GUI 点击另存;
  • 可以对整个网页截图,包括视口外的部分(90 以上版本浏览器支持);
  • 可处理非 open 状态的 shadow-root。

ChromiumPage 依赖

安装 drissionPage

pip3 install drissionPage

ChromiumPage windows报错

刚开始执行的时候,直接报错:

for filename in filenames:
TypeError: 'WindowsPath' object is not iterable

百度、Google无果。

最后自己调试解决的。

报错:

解决:

打开报错的类,编辑代码。

思路,看代码是循环的时候出现报错,filenames对象是一个WindowsPath类型。循环的时候报错。看代码是循环文件,便在前面加了一个类型判断。

ChromiumPage 使用

以下为一个小示例

        from DrissionPage import ChromiumPage
        driver = ChromiumPage()
# 监听指定的url
        driver.listen.start('aweme/v1/web/comment/list/')
# 访问链接
        driver.get('https://www.douyin.com/video/7382814024410336552')


#滚动滚动条到底部,获取监听结果
        for page in range(3):
            print(f'正在采集第{page + 1}页的数据内容')
            driver.scroll.to_bottom()
            resp = driver.listen.wait()
            json_data = resp.response.body
# 保存文件(可以注释)
            save_comments_to_csv(json_data.get('comments', []), csv_writer)

# 获取元素
        moreButton = driver.eles("tag:button@class=jlqd8usT comment-reply-expand-btn")
        # moreButton = driver.eles("tag:button@class=bgz8RRCZ")
# 增加新的监听
        driver.listen.start('aweme/v1/web/comment/list/reply/')
        for more in moreButton:
# 执行元素动作
            more.click()
# 等待结果
            resp = driver.listen.wait()
# 获取结果
            json_data = resp.response.body
            print(json_data)

参考链接:

元素定位&操作

自动化测试框架:DrissionPage_chromiumpage-CSDN博客x

相关使用

爬虫基础之自动化工具 DrissionPage 的使用_浏览器_功能_httpsg

更多使用

一个神奇的自动化爬虫利器 - DrissionPagae_drissionpage设置代理-CSDN博客

https://www.drissionpage.cn/ChromiumPage/screen/ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值