PyQt/QWebView/README.md

57 lines
1.8 KiB
Markdown
Raw Permalink Normal View History

2018-12-26 23:04:56 +08:00
# QWebView
2019-03-12 12:47:56 +08:00
- 目录
2019-05-22 10:49:55 +08:00
- [梦幻树](#1梦幻树)
- [获取Cookie](#2获取Cookie)
- [和Js交互操作](#3和Js交互操作)
2019-07-08 15:43:01 +08:00
- [网页整体截图](#4网页整体截图)
2019-09-18 14:01:58 +08:00
- [播放Flash](#5播放Flash)
2019-09-24 16:17:05 +08:00
- [拦截请求](#6拦截请求)
2019-03-12 12:47:56 +08:00
2018-12-26 23:04:56 +08:00
## 1、梦幻树
[运行 DreamTree.py](DreamTree.py)
2019-02-01 23:41:22 +08:00
2018-12-26 23:04:56 +08:00
在桌面上显示透明html效果使用`QWebkit`加载html实现,采用窗口背景透明和穿透方式
![DreamTree](ScreenShot/DreamTree.png)
## 2、获取Cookie
[运行 GetCookie.py](GetCookie.py)
从`page()`中得到`QNetworkAccessManager`,在从中得到`QNetworkCookieJar`,
最后得到cookie,当然也可以设置自己的`QNetworkCookieJar`
2019-05-22 10:45:15 +08:00
![GetCookie](ScreenShot/GetCookie.png)
## 3、和Js交互操作
[运行 JsSignals.py](JsSignals.py)
通过`QWebFrame`的`addToJavaScriptWindowObject`函数提供进行Python对象和Javascript的交互
具体看代码中的注释
2019-07-08 15:43:01 +08:00
![JsSignals](ScreenShot/JsSignals.gif)
## 4、网页整体截图
[运行 ScreenShotPage.py](ScreenShotPage.py)
2019-07-09 14:47:09 +08:00
1. 方式1原理是通过`QWebView.QWebPage.QWebFrame`得到内容的高度,然后设置`QWebPage.setViewportSize`的大小,
2019-07-08 15:43:01 +08:00
最后通过`QWebFrame.render`把图片截出来
2019-07-09 14:47:09 +08:00
2. 方式2通过js库`html2canvas`对指定元素截图,得到`base64`编码的数据并调用接口函数传递到py代码中
2019-07-08 15:43:01 +08:00
2019-09-18 13:32:22 +08:00
![ScreenShotPage](ScreenShot/ScreenShotPage.gif)
## 5、播放Flash
[运行 PlayFlash.py](PlayFlash.py)
1. 重点在于设置 `os.environ['QTWEBKIT_PLUGIN_PATH'] = os.path.abspath('Data')` 非常重要设置为NPSWF32.dll文件所在目录
2. 其次是xp下ssl问题,具体参考代码
2019-09-24 16:17:05 +08:00
![PlayFlash](ScreenShot/PlayFlash.gif)
## 6、拦截请求
[运行 BlockRequest.py](BlockRequest.py)
通过`QNetworkAccessManager`中的`createRequest`方法对每个请求做拦截过滤
2019-09-24 16:19:10 +08:00
![BlockRequest](ScreenShot/BlockRequest.png)