57 lines
No EOL
1.8 KiB
Markdown
57 lines
No EOL
1.8 KiB
Markdown
# QWebView
|
||
|
||
- 目录
|
||
- [梦幻树](#1梦幻树)
|
||
- [获取Cookie](#2获取Cookie)
|
||
- [和Js交互操作](#3和Js交互操作)
|
||
- [网页整体截图](#4网页整体截图)
|
||
- [播放Flash](#5播放Flash)
|
||
- [拦截请求](#6拦截请求)
|
||
|
||
## 1、梦幻树
|
||
[运行 DreamTree.py](DreamTree.py)
|
||
|
||
在桌面上显示透明html效果,使用`QWebkit`加载html实现,采用窗口背景透明和穿透方式
|
||
|
||
![DreamTree](ScreenShot/DreamTree.png)
|
||
|
||
## 2、获取Cookie
|
||
[运行 GetCookie.py](GetCookie.py)
|
||
|
||
从`page()`中得到`QNetworkAccessManager`,在从中得到`QNetworkCookieJar`,
|
||
最后得到cookie,当然也可以设置自己的`QNetworkCookieJar`
|
||
|
||
![GetCookie](ScreenShot/GetCookie.png)
|
||
|
||
## 3、和Js交互操作
|
||
[运行 JsSignals.py](JsSignals.py)
|
||
|
||
通过`QWebFrame`的`addToJavaScriptWindowObject`函数提供进行Python对象和Javascript的交互
|
||
|
||
具体看代码中的注释
|
||
|
||
![JsSignals](ScreenShot/JsSignals.gif)
|
||
|
||
## 4、网页整体截图
|
||
[运行 ScreenShotPage.py](ScreenShotPage.py)
|
||
|
||
1. 方式1:原理是通过`QWebView.QWebPage.QWebFrame`得到内容的高度,然后设置`QWebPage.setViewportSize`的大小,
|
||
最后通过`QWebFrame.render`把图片截出来
|
||
2. 方式2:通过js库`html2canvas`对指定元素截图,得到`base64`编码的数据并调用接口函数传递到py代码中
|
||
|
||
![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问题,具体参考代码
|
||
|
||
![PlayFlash](ScreenShot/PlayFlash.gif)
|
||
|
||
## 6、拦截请求
|
||
[运行 BlockRequest.py](BlockRequest.py)
|
||
|
||
通过`QNetworkAccessManager`中的`createRequest`方法对每个请求做拦截过滤
|
||
|
||
![BlockRequest](ScreenShot/BlockRequest.png) |