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访问网页元素(百度博客下载例子)相关推荐

  1. HTML5期末大作业:个人介绍/个人主页/网页设计——个人博客 (11页) HTML+CSS+JavaScript

    HTML5期末大作业:个人介绍/个人主页/网页设计--个人博客 (11页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见 ...

  2. HTML5期末大作业:个人网站设计——个人旅游图片博客HTML5模板(7个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业下载

    HTML5期末大作业:个人网站设计--个人旅游图片博客HTML5模板(7个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业下载 临近期末, 你还在为HTML网页设计结课作业,老 ...

  3. html一级子元素,利用JavaScript怎么获取元素下的第一级子元素

    利用JavaScript怎么获取元素下的第一级子元素 发布时间:2021-01-22 17:03:51 来源:亿速云 阅读:112 作者:Leah 这期内容当中小编将会给大家带来有关利用JavaScr ...

  4. 【基础】利用 hexo + Gitpage 开发自己的博客

    原文作者:cherry 原文地址:[基础]利用 hexo + Gitpage 开发自己的博客 进入程序员这个坑之后就开始自己在网上扒资料,然而资料太多,情况太复杂,主要是看见别人的博客,感觉好高大上, ...

  5. 百度博客PING 介绍

    百度博客PING 服务手动提交地址     附:百度博客PING 服务问答 http://ping.baidu.com/ping.html 博客提交,在提交框中输入您的博客地址或RSS 地址,然后点击 ...

  6. 如何利用wordpress搭建自己独立的博客(个人网站)

    原址:http://blog.csdn.net/edroid1530/article/details/51136896 如何利用wordpress搭建自己独立的博客(个人网站) 搭建博客的方式多种样, ...

  7. HTML期末大作业~web前端开发个人博客HTML整站模板~Web大学生网页成品 ~个人主页博客网页HTML设计制作...

    HTML期末大作业~ 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 简单个人网页制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTM ...

  8. HTML网页设计期末课程大作业 :汽车网页——宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载

    HTML网页设计期末课程大作业 :汽车网页--宝马轿车 6页 带背景音乐 学生网页设计作业HTML+CSS+JavaScript学生网页课程设计期末作业下载 临近期末, 你还在为HTML网页设计结课作 ...

  9. HTML期末大作业~web前端开发个人博客HTML整站模板~Web大学生网页成品 ~个人主页博客网页HTML设计制作

    HTML期末大作业~ 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 简单个人网页制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTM ...

最新文章

  1. luogu P4108 [HEOI2015]公约数数列(分块、gcd性质)
  2. 独家 | 利用Cosmos微服务改善Netflix视频质量
  3. [转载]freeSwitch基本操作(转载)
  4. JAVA基础5——与String相关的系列(1)
  5. 开启多媒体台式计算机过程,计算机硬件的组成多媒体教学课件制作
  6. EIGRP个人学习笔记
  7. Android工程的目录说明
  8. java线程volatile_多线程与高并发(四)volatile关键字
  9. 在线教学试卷讲评利器——屏幕画笔
  10. php文章详情页排版,WordPress自定义文章详情页模板
  11. CGI编程学习----查询2000W开房数据
  12. webstack开源网站导航源码
  13. java foxpro,在Visual FoxPro中更新顶部
  14. 《Excel大神上分攻略》学习笔记1——填充、行列操作、数据格式
  15. fedora linux搜狗输入法,在Fedora 28系统下安装搜狗输入法
  16. 《统计学习方法》学习笔记(一):概论
  17. Win11开机提示音要怎么改?
  18. jQuery幻灯片带缩略图平移滑动焦点图
  19. Python使用镜像下载安装包
  20. ChatGPT 出现后计算机类专业还建议读吗?

热门文章

  1. PostgreSQL13主从同步异步流复制
  2. xilinx 官网vivado和petalinux下载速度慢的解决办法
  3. 基于短信的手机控制程序
  4. 防疫中计算机的应用有哪些,计算机在人们生活中的应用,在我们的生活中,哪些与计算机的应用有关?...
  5. 小王子(LCA的运用)
  6. pagehelper浅见
  7. BIUT Blockchain Explorer功能介绍
  8. 斯阔谷冬奥会首次使用计算机,1960年斯阔谷冬季奥运会 - 纺织/服装 - 百科全书 - 价值网...
  9. 计算机老师的寄 语,计算机专业老师毕业赠言
  10. 雷达回波脉冲压缩python代码