QT网络应用——获取网页数据
我们在浏览器中输入一个网址,然后在网页中就会显示出这个网页中的内容。
试想那在QT应用中如何访问这个网页,并获取到网页数据呢?
从网页中获取数据,需要用到的三个类:
类 | 功能介绍 |
---|---|
QNetworkAccessManager | 用于协调网络操作,每当一个请求创建后,用该类来调度它,并发射信号报告进度。 |
QNetworkRequest | 是一个抽象的类(定义对象的时候要用指针),用来对网页进行请求,作为与请求有关的信息的统一容器,在创建请求对象时,通过指定URL来决定请求的网页(隐藏包含了请求的协议),目前支持HTTP、FTP、本地文件URLs的上传和下载。 |
QNetworkReply | 对于网络请求的应答使用该类;当请求被完成调度时,由QNetworkAccessManager类创建 |
1、程序编写流程
1、通过QNetworkRequest 类,创建一个网络请求对象,并为这个请求设置一个网址。
QNetworkRequest networkRequest(QUrl("http://whois.pconline.com.cn/ipJson.jsp")); //指定请求的网址(可以获取到当前电脑IP地址的归属地),可以在创建对象的时候进行赋值操作
2、通过QNetworkAccessManage 类的get方法,可以将这个网页请求发送给服务器,并接收服务器发送的回复信息。接收完回复信息会释放finished信号。
QNetworkReply networkReply = networkAccessManager->get(networkRequest); //进行网络请求,会返回一个回复,服务器回复结束,QnetworkReply就会释放finished信号
4、对finished信号绑定一个槽函数,并在这个槽函数中,通过QNetworkReply类下的readAll()方法,就可以接收服务器发送回来的全部网页数据了。
connect(networkReply,SIGNAL(finished()),this,SLOT(finished_slot())); //回复结束的时候QnetworkReply会释放finished信号void Widget::finished_slot()
{QNetworkReply *reply = (QNetworkReply *) sender();//sender()函数作用就是得到一个指针,这个指针是:当前槽函数所对应的信号是哪个对象发送的
QByteArray data1 = reply->readAll(); //读取传回来的JSON数据reply->deleteLater(); //记得释放内存
}
注意:如果想把获取到的JSON数据打印出来看看,直接就放在打印语句中是不行的(中文会乱码),需要转化数据的编码形式。因为网页传回来的数据编码形式不是Unicode形式,而QT默认的编码时Unicode形式,所以要转化为Unicode形式后QT才能正确处理。
QT网络应用——获取网页数据相关推荐
- python Chrome + selenium自动化测试与python爬虫获取网页数据
一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...
- python获取网页数据对电脑性能_【Python】网页数据爬取实战
由于网页结构跟之前有变化,还不是很熟悉.代码待完善,问题记录: 腾讯新闻二级网页内容爬取有问题. 链家网站头文件没有用到. 爬取一条腾讯视频的header内容,存入txt.要求: 包含网页链接 包含t ...
- java 网页数据_JAVA获取网页数据
很多时候用到抓取网页数据的功能,以前工作中曾经用到过,今天总结了一下: 1.抓取网页数据通过指定的URL,获得页面信息,进而对页面用DOM进行 NODE分析,处理得到原始HTML数据,这样做的优势在于 ...
- python获取网页数据后写入mysql_HTTP协议与使用Python获取数据并写入MySQL
一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...
- php抓取网页内容,获取网页数据
php通过simple_html_dom实现抓取网页内容,获取核心网页数据,将网页数据写入本地 xxx.json 文件 其代码实现逻辑: 1. 引入simple_html_dom.php文件 requ ...
- Python控制本地浏览器并获取网页数据
1.前言 在自动化办公中,我们经常需要利用爬虫技能去批量获取网页的数据,但是有时候我们在利用爬虫的时候,会遇到一个问题,就是登录的时候要携带参数,不如账号.密码.其他的加密信息 就好比我现在公司,好多 ...
- php 获得其他网页数据,php抓取网页内容,获取网页数据
php通过simple_html_dom实现抓取网页内容,获取核心网页数据,将网页数据写入本地 xxx.json 文件 其代码实现逻辑: 1. 引入simple_html_dom.php文件 requ ...
- 6、通过xpath获取网页数据
1.xpath解析网页源文件 from urllib import request from lxml import etree # 请求的url url = "http://www.dfe ...
- Swift-使用Alamofire获取网页数据
这里对如何使用网络请求获取福大就业信息网上的内容做一个简单的记录. 一.分析策略 1.寻找网络请求URL 我们需要从福州大学就业信息网上获取数据,打开网页http://jycy.fzu.edu.cn/ ...
最新文章
- Jquery通过Ajax方式来提交Form表单
- sqlite DLL load failed
- Asp.net页面间传值方式汇总
- vue init深度定制团队自己的Vue template
- SilverLight企业应用框架设计【二】框架画面
- 黑马程序员--学习while、do-while、for循环、try-catch的用法
- 移动端C#病毒“东山再起”,利用知名应用通信实现远控隐私窃取
- Word报告自动生成(例如 导出数据库结构)
- 腾讯总监周颢:亿级用户微信采用的架构宝典
- 移位运算符<< >>
- 带你学会区分Scheduled Thread Pool Executor 与Timer
- UVA10738 Riemann vs Mertens【欧拉筛法】
- qt实现点击出现窗口,点击其他任何地方窗口消失
- Web — 选择器+浮动+清除
- Android音频系统
- java word checkbox_springmvc poi 导出word 复选框 怎么用
- KUKA力控软件使用问题介绍
- 【LeetCode】18. 4Sum 四数之和
- 校园转转二手市场源码/Java二手交易市场整站源码
- 常见HTTP/FTP/WebSockets状态码大全
热门文章
- 分区工具diskgenius如何使用 新电脑新硬盘如何分区
- Wamp apache无法启动
- 基于TNEWS‘ 今日头条中文新闻(短文本)分类
- 百度网盘批量修改文件名称之随机名称(六)
- 练手小程序——Java猜拳游戏
- introduce to local variable总是有declare final
- 设计没灵感时到集设,看看这些创意合成海报合集?
- 软件开发者必须要知道Unicode和字符集,这是最起码的要求(别找借口)
- Screened Poisson Surface Reconstruction (Version 8.0)
- 探秘皮克斯:坚持原创