实时抓取网页数据( 宅家“疫情数据信息实时监控项目”演示如何获取腾讯数据接口的地址)

优采云 发布时间: 2021-10-27 02:16

  实时抓取网页数据(

宅家“疫情数据信息实时监控项目”演示如何获取腾讯数据接口的地址)

  

  房子很无聊,所以最好学习一些技能!

  1.前言

  在近期新冠病毒引发的肺炎疫情中,很多人不得不宅在家里。为了让自己不那么无聊,给自己找点事情做,做一个“疫情数据信息实时监测项目”。我去年开始学习 Qt/C++。让我们用这个小项目来练习。代码是开源的。下载地址在文末。当然,如果你和我一样,我建议你用熟悉的编程语言自己实现,也就是学了知识,打发时间。在做之前,我在Github上搜索了一下,看看有没有相关的资料。好像很多人已经在做了:

  

  不过大部分都是基于JavaScript或Python的项目,没有一个是使用Qt/C++平台开发的。

  2.主要功能

  界面也很简单,主要包括实时数据和历史数据的展示,实时疫情信息的展示,谣言信息的展示。数据来自腾讯新闻。

  

  基于Qt的疫情实时监测平台主界面

  一共使用了两个数据接口。一个是收录实时数据、历史数据、疫情动态的界面,一个是收录辟谣信息的界面。

  功能也很简单:

  3.获取数据接口

  现在各大网站都发布了自己的实时疫情展示平台,如定香园、腾讯、新浪、百度、知乎、网易等,包括个别开发者也开发了一些接口、数据均来自国家或地方卫生健康委员会发布的信息。

  我使用的是腾讯数据源,数据为JSON格式,解析方便。下面以Chrome浏览器为例,演示如何获取腾讯数据接口的地址。

  打开链接后,按F12切换到开发者模式。再次刷新网页,切换到Network,按Ctrl+F搜索当前全国确诊人数:44765,然后回车,可以看到这个数据收录在一个JSON字符串中,这个字符串就是返回的数据某个请求地址,而这个地址就是数据的接口地址。

  

  为了验证这个接口是否正确,我们复制这个地址,然后在地址栏中输入回车,可以看到返回了很多字符串:

  

  这意味着我们找到了正确的地址。完整地址:

  在:

  时间戳是指格林威治标准时间1970年1月1日00:00:00(北京时间1970年1月1日08:00)到现在的总毫秒数。

  因此,如果要获取最新的数据,可以省略以上两个参数:

  如果要获取历史数据,只需要修改时间戳即可,其他网站接口地址获取方式类似。

  这里我们只使用腾讯新闻的界面。保存 JSON 文件并对其进行格式化。您可以看到收录的信息:

  

  关于腾讯的数据,我还要说一件事。腾讯的JSON数据这几天更新了好几次:

  JSON 数据文件的大小也从最初的 80KB 变成了现在的 160KB。

  对于辟谣信息,腾讯还放了两个接口,一是查询最新的辟谣信息,二是获取辟谣信息的详细内容。同理,我们可以通过上面获取数据接口地址的方法来获取这两个地址。

  查看最新反谣言信息地址:

  参数与数据接口相同,函数名和时间戳可以省略:

  

  在这个界面中,有最新的10条辟谣消息。每条辟谣消息包括标题、发布者、发布时间、图片地址、辟谣类型、辟谣id等,通过另一个界面可以查询到某个辟谣新闻的详细信息。

  比如这个传闻:

  我们访问这样一个地址:

  8be33c500e00257c97419ac24ab59d8f

  您将获得该谣言新闻的 JSON 格式详细信息如下:

  

  我们实际开发中没有用到这个接口,而是直接调用浏览器打开这个地址的网页地址:

  8be33c500e00257c97419ac24ab59d8f

  不过这个界面是针对移动端的,在电脑端浏览效果不好:

  

  移动端:

  

  4.Qt 实现

  涉及的主要Qt知识如下:

  QCustomplot绘图:

  

  驳斥信息显示:

  

  5.主要难点

  整个开发过程就是一个解决一个问题的过程。许多控件都是第一次使用。幸运的是,有很多材料。主要困难如下:

  历史数据折线图显示:

  

  实时疫情新闻显示:

  

  实时谣言信息显示:

  

  6.包发布

  为了让没有安装Qt环境的用户可以使用我们开发的Qt程序,我们需要将生成的程序文件打包发布。首先,使用 Qt 自带的 windeploy filename.exe 命令添加运行该程序所需的所有内容。然后用程序打包软件把这个文件打包成setup.exe安装文件安装在其他电脑上,或者打包成绿色版软件,直接双击运行,我用下面两个软件打包。

  7.开源地址

  我已经开源了这个项目的Qt项目的所有代码和安装包下载地址,如下:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线