From c2f13213d7aedb9d12b17cdd8556449026f7b9ed Mon Sep 17 00:00:00 2001 From: g1879 Date: Fri, 27 May 2022 18:11:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/tools.py | 3 +- README.md | 7 ++- docs/README.md | 2 +- docs/_navbar.md | 2 + docs/使用方法/监听浏览器网络数据.md | 71 ++++++++++------------------- 5 files changed, 31 insertions(+), 54 deletions(-) diff --git a/DrissionPage/tools.py b/DrissionPage/tools.py index 23665f2..a837ab4 100644 --- a/DrissionPage/tools.py +++ b/DrissionPage/tools.py @@ -2,6 +2,7 @@ """ 实用工具 """ +from FlowViewer import Listener, RequestMan + from .session_element import make_session_ele from .easy_set import get_match_driver -from FlowViewer import Listener diff --git a/README.md b/README.md index bae1f75..66b69d7 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ DrissionPage,即 driver 和 session 组合而成的 page。 可兼顾 selenium 的便利性和 requests 的高效率, 更棒的是,它的使用方式非常简洁和人性化,代码量少,对新手友好。 -点击打开:📒[使用文档](http://g1879.gitee.io/drissionpage) +**使用文档:** 📒[点击打开](http://g1879.gitee.io/drissionpage) -**交流QQ群:** 897838127 +**QQ群:** 897838127 **联系邮箱:** g1879@qq.com @@ -218,7 +218,7 @@ r = requests.get(url) with open(f'{save_path}\\img.png', 'wb') as fd: for chunk in r.iter_content(): fd.write(chunk) - + # 使用 DrissionPage: page.download(url, save_path, 'img') # 支持重命名,处理文件名冲突,自动创建目标文件夹 ``` @@ -288,4 +288,3 @@ Git 命令学习 如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :) ![](https://gitee.com/g1879/DrissionPage-demos/raw/master/pics/code.jpg) - diff --git a/docs/README.md b/docs/README.md index f6a4812..5d485e0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,7 +8,7 @@ DrissionPage,即 driver 和 session 组合而成的 page。 可兼顾 selenium 的便利性和 requests 的高效率, 更棒的是,它的使用方式非常简洁和人性化,代码量少,对新手友好。 -点击打开:📒[使用文档](http://g1879.gitee.io/drissionpage) + **交流QQ群:** 897838127 diff --git a/docs/_navbar.md b/docs/_navbar.md index aed8b29..b15f502 100644 --- a/docs/_navbar.md +++ b/docs/_navbar.md @@ -1,3 +1,5 @@ * [DataRecorder](https://gitee.com/g1879/DataRecorder) * [ListPage](https://gitee.com/g1879/ListPage) +* [DownloadKit](https://gitee.com/g1879/DownloadKit) +* [FlowViewer](http://g1879.gitee.io/flowviewer) * [Demos](https://gitee.com/g1879/DrissionPage-demos) diff --git a/docs/使用方法/监听浏览器网络数据.md b/docs/使用方法/监听浏览器网络数据.md index 3d1ad54..4e418e4 100644 --- a/docs/使用方法/监听浏览器网络数据.md +++ b/docs/使用方法/监听浏览器网络数据.md @@ -1,60 +1,35 @@ - - # 监听浏览器网络数据 -许多网页的数据来自接口,在网站使用过程中动态加载,如使用 JS 加载内容的翻页列表。 +许多网页的数据来自接口,在网站使用过程中动态加载,如使用 JS 加载内容的翻页列表。 -这些数据通常以 json 形式发送,浏览器接收后,对其进行解析,再加载到 DOM 相应位置。 +这些数据通常以 json 形式发送,浏览器接收后,对其进行解析,再加载到 DOM 相应位置。 -以前,我们从 DOM 中去获取解析后数据的,可能存在 +做数据采集的时候,我们往往从 DOM 中去获取解析后数据的,可能存在 数据不全、加载响应不及时、难以判断加载完成等问题。 -## 控制浏览器同时监听请求 +因此开发了一个监听器,专门用于抓取 Chrome 浏览器数据包。 -复制此代码可直接运行查看结果。 +由于该工具不依赖 DrissionPage,现已独立发布为一个库,但仍然可以在 DrissionPage 中导入。 + + + +!> 为了便于维护,该工具用法请异步 [FlowViewer](https://gitee.com/g1879/FlowViewer) 查看。 + +# + +# 简单示例 ```python -''' -如果监听特定请求的Chrome浏览器数据,可以采用如下代码 -''' -p = MixPage(driver_options=do, session_options=False) -#监听浏览器 -l =Listener(p) -# 找到需要监听的链接 -l.listen('JobSearchResult.aspx',count=10,asyn=True) -p.ele(".next-page PageNumber").click(by_js=True) +from DrissionPage.tools import Listener -for i in l.steps(): - scode = i[0].body - # 一旦数据出来,立即停止加载 - p.stop_loading() - #使用解析网页 - p.ele(".next-page PageNumber").click(by_js=True) -#停止监听,可以设置条件 -l.stop() -``` - - -## 监听指定端口的请求 - -复制此代码可直接运行查看结果。 - - -```python -''' -如果仅仅是监听Chrome浏览器的请求可以采用下面的代码 -''' -from FlowViewer import Listener -#监听有端口的浏览器 -l =Listener() - -l.listen(None,count=None,asyn=True) - -for i in l.steps(): - print(i[0].url) - print(i[0].body) - -#停止监听,可以设置条件或者跳出循环 -l.stop() +listener =Listener(9222) # 创建监听器,监听9222端口的浏览器 +listener.set_targets('JobSearchResult.aspx') # 设置需要监听的url + +listener.listen(count=10) # 开始监听,接收到10条目标url的请求后停止 + +for i in listener.steps(): + print(i[0].body) # 打印实时打印监听到的内容 + +listener.stop() #停止监听 ```