Qt利用JavaScript访问网页元素(百度博客下载例子)
Qt利用JavaScript访问网页元素(百度博客下载例子)
本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。
原文链接:Qt利用JavaScript访问网页元素(百度博客下载例子)昨天的文章Qt利用DOM API访问网页元素介绍了怎样使用QtWebKit中的DOM支持来实现读取百度博客中的博客标题和上下文链接。要实现网页处理的功能,QtWebKit还提供了更灵活的方法,就是利用JavaScript来处理网页,使用JavaScript能更方便的扩展你的应用,首先它不需要重新编译程序,在网页内容变化的时候,修改JavaScript文件就可以,其次也很容易实现插件话,比如我读取百度博客可以使用baidu.js来实现,要支持新浪的博客,只需另外增加一个sohu.js文件就可以。从代码使用上JavaScript也有一定优势,它能直接使用HTML里的JavaScript定义的变量,如果要用Qt代码几乎是不可能的。
要在QtWebKit中使用JavaScript,核心的一个函数就是evaluateJavaScript(QString),参数是要执行的JavaScript语句。有两个类定义了该函数分别是QWebElement和QWebFrame,也就是说可以对HTML文档中的一个节点或者整个文档调用evaluateJavaScript()。evaluateJavaScript()可以执行更改文档节点中的内容,比如修改背景色,图表数据等。evaluateJavaScript()还能返回数据,它执行的最后一条JavaScript语句的结果输出传给Qt代码,可以是一个字符串,也可以是一个XML对象,注意它的返回类型是QVariant。
我们还来看一个我要加载的baidu.js文件,里面用简单的JavaScript DOM读取博客的主体,标题和上下文链接。
function getBlog(){
var blog_text=document.getElementById(“blog_text”);
return blog_text.innerHTML;
}
function getTitle(){
var blog=document.getElementById(“m_blog”);
var list=blog.getElementsByClassName(“tit”);
return list[0].innerHTML;
}
function older_href(){
return “http://hi.baidu.com”+pre[3];
}
function newer_href(){
return “http://hi.baidu.com”+post[3];
}
为了使用这里的JavaScript函数,可以使用如下Qt代码加载
QFile file;
file.setFileName(“baidu.js”);
file.open(QIODevice::ReadOnly);
QString jscript = file.readAll();
file.close();
mainframe->evaluateJavaScript(jscript);
在真正要读取博客中的内容的时候,去调用对应的JavaScript函数就可以,代码如下。下面的代码,我们使用了evaluateJavaScript()的返回值。
QString js_str,js_return;
js_str=QString(“getTitle();”);
js_return=mainframe->evaluateJavaScript(js_str).toString();
title->setText(js_return);
js_str=QString(“older_href();”);
js_return=mainframe->evaluateJavaScript(js_str).toString();
prev->setText(js_return);
js_str=QString(“newer_href();”);
js_return=mainframe->evaluateJavaScript(js_str).toString();
next->setText(js_return);
从上面的结构来看,我们很容易把下载百度博客的程序扩展到其他空间的博客上。只要实现一个相应的.js文件就可以。可编译执行的例子源代码下载地址在这里,没错就是昨天的代码,你需要在两种代码之间用指定的宏切换一下而已。
Qt利用JavaScript访问网页元素(百度博客下载例子)相关推荐
- HTML5期末大作业:个人介绍/个人主页/网页设计——个人博客 (11页) HTML+CSS+JavaScript
HTML5期末大作业:个人介绍/个人主页/网页设计--个人博客 (11页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见 ...
- HTML5期末大作业:个人网站设计——个人旅游图片博客HTML5模板(7个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业下载
HTML5期末大作业:个人网站设计--个人旅游图片博客HTML5模板(7个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业下载 临近期末, 你还在为HTML网页设计结课作业,老 ...
- html一级子元素,利用JavaScript怎么获取元素下的第一级子元素
利用JavaScript怎么获取元素下的第一级子元素 发布时间:2021-01-22 17:03:51 来源:亿速云 阅读:112 作者:Leah 这期内容当中小编将会给大家带来有关利用JavaScr ...
- 【基础】利用 hexo + Gitpage 开发自己的博客
原文作者:cherry 原文地址:[基础]利用 hexo + Gitpage 开发自己的博客 进入程序员这个坑之后就开始自己在网上扒资料,然而资料太多,情况太复杂,主要是看见别人的博客,感觉好高大上, ...
- 百度博客PING 介绍
百度博客PING 服务手动提交地址 附:百度博客PING 服务问答 http://ping.baidu.com/ping.html 博客提交,在提交框中输入您的博客地址或RSS 地址,然后点击 ...
- 如何利用wordpress搭建自己独立的博客(个人网站)
原址:http://blog.csdn.net/edroid1530/article/details/51136896 如何利用wordpress搭建自己独立的博客(个人网站) 搭建博客的方式多种样, ...
- HTML期末大作业~web前端开发个人博客HTML整站模板~Web大学生网页成品 ~个人主页博客网页HTML设计制作...
HTML期末大作业~ 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 简单个人网页制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTM ...
- HTML网页设计期末课程大作业 :汽车网页——宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载
HTML网页设计期末课程大作业 :汽车网页--宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载 临近期末, 你还在为HTML网页设计结课作 ...
- HTML期末大作业~web前端开发个人博客HTML整站模板~Web大学生网页成品 ~个人主页博客网页HTML设计制作
HTML期末大作业~ 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 简单个人网页制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTM ...
最新文章
- luogu P4108 [HEOI2015]公约数数列(分块、gcd性质)
- 独家 | 利用Cosmos微服务改善Netflix视频质量
- [转载]freeSwitch基本操作(转载)
- JAVA基础5——与String相关的系列(1)
- 开启多媒体台式计算机过程,计算机硬件的组成多媒体教学课件制作
- EIGRP个人学习笔记
- Android工程的目录说明
- java线程volatile_多线程与高并发(四)volatile关键字
- 在线教学试卷讲评利器——屏幕画笔
- php文章详情页排版,WordPress自定义文章详情页模板
- CGI编程学习----查询2000W开房数据
- webstack开源网站导航源码
- java foxpro,在Visual FoxPro中更新顶部
- 《Excel大神上分攻略》学习笔记1——填充、行列操作、数据格式
- fedora linux搜狗输入法,在Fedora 28系统下安装搜狗输入法
- 《统计学习方法》学习笔记(一):概论
- Win11开机提示音要怎么改?
- jQuery幻灯片带缩略图平移滑动焦点图
- Python使用镜像下载安装包
- ChatGPT 出现后计算机类专业还建议读吗?
热门文章
- PostgreSQL13主从同步异步流复制
- xilinx 官网vivado和petalinux下载速度慢的解决办法
- 基于短信的手机控制程序
- 防疫中计算机的应用有哪些,计算机在人们生活中的应用,在我们的生活中,哪些与计算机的应用有关?...
- 小王子(LCA的运用)
- pagehelper浅见
- BIUT Blockchain Explorer功能介绍
- 斯阔谷冬奥会首次使用计算机,1960年斯阔谷冬季奥运会 - 纺织/服装 - 百科全书 - 价值网...
- 计算机老师的寄 语,计算机专业老师毕业赠言
- 雷达回波脉冲压缩python代码