pyton利用pyqt5的QWebkit抓取javascript执行后的动态网页

C++混合编程:QCefView、QWebKit,QWebengine、miniblink内嵌浏览器对比 随着前端技术的发展,PC端程序越来越倾向于做第三方嵌入浏览器的应用程序。为什么手机软件安装包越来越大,大概率是由于潜入了一个浏览器内核,例如:腾讯视频、虾米音乐等主流PC端程序都是内嵌浏览器,目的是对于频繁更新的内容部分采用网页js加载刷新的方式,这一点对于C++界面UI来说是比较难以做的好的。 阅读详情

对于 javascript 动态创建网页标签生成的网页,用python的urllib2抓取不到最终的网页。

使用Qt的QWebkit组件可以模拟浏览器执行javascript并讲最终网页提取出来。

之前网上有很多关于pyqt4抓取动态网页的帖子,但是pyqt5与pyqt4有细微不同,纪录下来以备后面查看。


import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebKitWidgets import *

#use QtWebkit to get the final webpage
class WebRender(QWebPage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.loadFinished.connect(self.__loadFinished)
        self.mainFrame().load(QUrl(url))
        self.app.exec_()

    def __loadFinished(self, result):
        self.frame = self.mainFrame()
        self.app.quit()

 r = WebRender(url)
        html = r.frame.toHtml()
        page = etree.HTML(html.encode('utf-8'))

注意:

1、PyQt5的 QWebPage 要从 PyQt5.QtWebKitWidgets 导入,QApplication 要从 PyQt5.QtWidgets 导入

2、r.frame.toHtml() 得到的html要encode成utf-8,以支持对中文字符的支持

Python网络爬虫开发:使用PyQt5和WebKit构建可定制的爬虫 阅读详情

相关推荐

使用Qt的WebKit解决方案

Qt的WebKit模块提供了一种强大的解决方案,可以在Qt应用程序中嵌入和显示Web内容。通过加载和显示网页,您可以将Web功能集成到您的应用程序中,从而为用户提供更多丰富和交互性的体验。Qt是一种跨平台的应用程序开发框架,它提供了丰富的工具和库,用于开发各种类型的应用程序。Qt的WebKit模块提供了一个强大的Web浏览器引擎,可以在Qt应用程序中嵌入和显示Web内容。请注意,Qt的WebKit模块在Qt 5.6版本后已被弃用,建议使用Qt的Qt WebEngine模块作为替代方案。

DevNinja的博客 1627

QWebKit升级QWebEngine

QWebKis替换为QWebEngine引言QWebView与QWebEngineView差异1.QWebSettings替换为QWebEngineSettings2.Load修改3.runJs修改注意事项1.qt调用js2.web端调用qt函数 引言 代码中使用到web地图业务,之前实现是通过QWebView实现的,现在要统一替换为QWebEngineView。引入前需要在pro中新增对应模块 QT += webenginewidgets QWebView与QWebEngineView差异 以下是修改代

weixin_42219627的博客 1658

Python爬虫之JavaScript动态渲染页面爬取(Pyppeteer的使用)

一、Pyppeteer的使用、二、pyppeteer爬取实战、Pyppeteer依赖Chromium浏览器运行的。如果第一次运行Pyppeteer的时候,没有安装Chromium浏览器,程序会自动帮我们自动安装和配置好,另外,Pyppeteer是基于Python的新特性asnc实现的,所以它的一些操作执行也支持异步方式。

恐龙让Lee的博客 5550

如何在Qt5上使用qtwebkit

如何在Qt5上使用QtWebKit库

Goatt11的博客 3060

qwebchannel.js

pyqt5的web学习的一个文件

SVPWM分析、各个扇区详细计算以及Matlab仿真

SVPWM分析以及各个扇区详细计算以及Matlab仿真说明目的两电平逆变器拓扑空间矢量扇区判断扇区内如何发波?矢量作用时间计算矢量切换时间的计算Simulink仿真/基于Matlab-R2014a版本 说明 第一次发文章,不太会用Markdown,word编辑的公式复制过来有些是乱码,因此都贴图了。 另外,本文公式和图片比较多,编辑工作量比较大,比较辛苦,转载的话,请注明出处,谢谢。 目的 由于在...

michaelf的博客 12万+

PyQt5.QtWebKit报错解决:

pyqt python

weixin_40531064的博客 414

Vue项目实战:5分钟搞定高德地图离线部署(附避坑指南)

本文详细介绍了在Vue项目中实现高德地图离线部署的完整方案。针对内网或网络隔离环境,通过获取并改造JSAPI文件、下载组织地图瓦片数据,并集成vue-amap组件,实现地图功能的本地化运行。文中提供了核心代码、避坑指南及性能优化建议,帮助开发者快速构建稳定可靠的离线地图应用。

data3的博客 935

QT浏览器(QWebKit)技术调研

之前被人错下了需求调研,竟然让我调研怎么用qt实现浏览器,想想也是醉了,但是没办法,不怕官就怕管啊,最后只好乖乖的调研了一番,还写了一个调研文档交付给了领导,哈哈,其实哪个公司会闲着没事自己做个浏览器呢?也没多大用处,可是万一有用呢,对吧!下面附上调研内容,欢迎拍砖!! 一、整体介绍 自定义浏览器的网页浏览功能实现主要使用QT自带的控件Qwebview,根据官方帮助文档其中Qwebview构成...

liyuanba2dai的博客 2257

大疆sdkV4以及V5webrtc推流

webrtcSDK中要用它的VideoCapturer来初始化推流 ViewdoCapturer是一个接口我们继承它 然后重建创建文件CapturerAircraft.java文件。CameraUtil.java这个是我们用来创建CapturerAircraft的一个工具。除了CapturerAircraft这个文件不一样外其他都是一样的。PlayBodyBean.java这个是我们的配置文件。下面的有个代码块第一个是v4的 第二个是v5的。接着我们来创建几个推流用到的webrtc工具。

weixin_41624865的博客 1188

【系统架构设计师】模拟预测试卷十 - 案例分析(完整结构)

本文为系统架构设计师考试模拟试题及参考答案,包含五个专题:质量属性(必答)、信息系统架构设计、嵌入式系统架构设计、云原生架构设计、面向服务架构设计(SOA)。试题一聚焦非功能需求与质量属性映射,如性能、可修改性、一致性等;其余选答题分别涉及分层架构设计(如嵌入式实时控制)、云原生会话管理、服务化治理(如契约设计、熔断策略)等核心架构场景,涵盖战术应用、权衡分析及解决方案设计。参考答案提供关键要点,例如离线借还的冲突解决、服务编排与共享服务的区分、嵌入式硬实时保护的必要性等,适用于备考实战演练。

数据知道的博客 251

Qt 从QWebKit到QWebEngine

目录 QWebKit与QWebEngine的区别 QtWebEngine模块 升级流程 更改头文件 中文问题 平台相关性问题 QWebKit与QWebEngine的区别 QtWebEngine模块 模块中,Qt WebEngine Core是基于chromium的核心,widgets、WenEngine和 process主要分别针对桌面、QML等需求。   与WebKi...

D-Boy的专栏 5382

MATLAB点云处理总目录

点云处理研究学习

weixin_44329757的博客 2556

pyqt5显示html,如何用PyQt5的QWebEngineVi“呈现”HTML

如何使用PyQt5 v5.6qwebengineview“呈现”HTML?我以前用PyQt5 v5.4.1qwebpage执行过这个任务,但是尝试新的QWebEngineView是suggested。以下是实现(它通常按预期工作,但对于某些站点和情况有无限期挂起的趋势):def render(source_html):"""Fully render HTML, JavaScript and all...

weixin_29107819的博客 1810

群无人机航迹规划-虚拟管道

图源北理工全权老师团队虚拟管道相关论文,文字为个人理解,以ppt形式分享报告。

coldmood77的博客 669

回归预测 | MATLAB实现MPR多元多项式回归

回归预测 | MATLAB实现MPR多元多项式回归

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 1645

PyQt5常用模块、类、控件

PyQt5常用模块、类、控件

晴天的博客 1588

Vue3 - 详解实现网站接入微信扫码登录功能,微信授权生成登录二维码用户用手机扫描二维码登陆,微信扫描二维码登录详细流程及示例代码,支持弹框式、浏览器单独新开页显示,最新vue集成微信扫码授权登录!

vue3,nuxt3,PC网站,网页,微信扫码登录,微信登陆,vue3微信扫码登录,获取个人信息,扫码登录后如何获取用户手机号,微信扫码授权登录,vue3详细实现微信扫一扫登陆,pc网页微信登录,vue3集成微信扫码登录,详细流程和示例源码,第三方扫码登录,vue3微信扫码登录怎么新开一页,跳页显示二维码,内嵌登录二维码,iframe,iframe新页面弹出,弹出一个小窗口显示登录二维码,登录报错,微信扫码没反应,解决手机点登录报错没反应,官方文档,手机扫描微信二维码登录网站,最好用的插件,vue-wxlo

🏆 前端领域优质创作者 1万+

QtWebkit 常用操作方法

(1) 让qwebview 设置代理服务器 QNetworkProxyproxy; proxy=QNetworkProxy::HttpProxy; proxy.setHostName(tr("15.12.110.252"));//代理服务器 proxy.setPort(8080); netwkAcssMng=new QNetworkAccessManager; netwkAcssMng

每一次对问题的深究,总会收获新的知识和体会 1748

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Python爬虫5】提取JS动态网页数据

动态网页示例 对加载内容进行逆向工程 1通过开发者工具的逆向工程 2通过墨盒测试的逆向工程 21搜索条件为空时 22用号匹配时 22用号匹配时 渲染动态网页 1使用WebKit渲染引擎 2使用Selenium自定义渲染 现在大部分的主流网站都用JavaScript动态显示网页内容,这样使得我们之前提取技术无法正常运行。本篇将介绍两种提取基于JS动态网页的数据。 JavaScript逆向工程 渲染Ja

Wu_Being 的优快云 博客 3万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PyQt5 QWebChannel实现python与Javascript双向通信

由来 Pyqt项目需要嵌入百度地图API,需要PyQt5与Javascript进行数据交互;网上的资料少切新旧不一,出于人人为我,我为人人的目的写下记录,希望后来人少走弯路。(替代方案:WebSocket实现通信,该技术比较新,后面再玩)。 测试环境 Python3.6、PyQt5.11 有用资料 PyQt5系列教程(60):QWebChannel使用举例2 Communicate w...

qianshuyuankk的专栏 5341

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

qwebkit 服务器调用本地html方法,用qt的QWebkit类调用谷歌地图

先说下,我这悲剧的一天,用qt5.0.2这个版本搞了一个上午都没有搞出来,无赖呀。。。突然想了下,还是换个版本吧!就用qt4.7.4版本了,哎哟喂,居然就调出来了呢!其实网上的文章大多是复制别人的,作者根本就没有做过,好不靠谱。下面说下我做的步骤,仅供参考哈:1.http://blog.youkuaiyun.com/chuckgao/article/details/4487157读了这篇文章有点启发,就按它做...

weixin_36275071的博客 446

QWebKit使用心得

最近这段时间,正在用QWebkit开发一个Application store的项目。因为需要用到第三方的数据,但后台无法直接去获取,所以需要做一个底层的模块,去获取第三方数据,然后给网页调用,因此我们选取了以WebKit为引擎的QWebkit来开发我们的项目。在开发中,获得了一些

SuperFPE的专栏 8858

python3用pyqt5开发简易浏览器

http://python.jobbole.com/82715/ 在这篇教程中,我们会用 Python 的 PyQt 框架编写一个简单的 web 浏览器。关于 PyQt ,你可能已经有所耳闻了,它是 Qt 框架下的一系列 Python 组件,而 Qt(发音类似“cute”)是用来开发GUI的 C++ 框架。严格来讲, Qt 也可用于开发不带图形界面的程序,但是开发用户界面应该是 Q...

ankuai2015的博客 4798

[pyqt5]ImportError: No module named ‘PyQt5.QtWebKitWidgets‘

安装anaconda3后直接在base环境安装pyqt5后spyder打开后直接提示错误。这是因为pyqt5早就弃用qtwebkit需要另外安装。

FL1623863129的博客 465

关于qt QWebKit/QWebview 使用心得

当前项目为c/s客户端,采用qt4.8.7,需要使用仪表盘、折线图、柱状图等,曾经使用过qwt和自定义的图形控件,但是都不尽如人意。最近发现ECharts控件不错。为此就要在qt端使用web的技术。为此使用了QWebview的控件。关于它的使用网上有很多,一开始也没有深究,借鉴了前人的经验立即就使用了,而且也能正常使用。当时主要使用view->page()->mainFrame()-&...

weixin_33755557的博客 1493
上一篇: mac os下py2app打包python程序
下一篇: Qt 5.4 + OpenCV 进行图像处理Tips
wolfwind
博客等级 码龄18年 4粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值