在如今信息爆炸的时代,鱼龙混杂的信息已经难以辨认真假。为了获取有价值的信息,采集系统已经成为很多企业不可或缺的一部分。本文将介绍如何使用 Duilib 和 MongoDB 技术实现一个完整的 Windows 采集系统。
1. 搭建开发环境
1.1 安装 Duilib
Duilib 是一个基于 C++ 的 GUI 框架,它能够让我们以较小的代码实现出比较好看的 Windows 界面。具体可以看这里:Duilib 官方网站。
在安装 Duilib 之前,我们需要安装 Visual Studio 2015 或以上版本,因为 Duilib 基于 Visual Studio 编译。
Duilib 的安装流程如下:
- Clone 或下载 Duilib 代码库。
- 打开 Duilib 目录下的
DirectUI.sln
解决方案。 - 编译解决方案,得到相应的库文件。
1.2 安装 MongoDB
MongoDB 是一个 NoSQL 数据库,它能够提供高可用性、高性能、可扩展的数据库存储解决方案。在本文中,我们将使用它来存储采集到的数据。
MongoDB 的安装步骤如下:
- 下载并解压 MongoDB 安装包。
- 配置环境变量,并创建数据库存储路径。
- 进入 MongoDB 安装路径下的
bin
目录,并运行mongod.exe
开启 MongoDB 数据库服务。
2. 开始编写采集系统
在本节中,我们将从以下三个方面开发我们的采集系统:
- 设计窗口界面
- 实现 MongoDB 数据库连接
- 编写相关数据采集代码
2.1 设计窗口界面
我们将使用 XML 语言来定义我们的窗口界面,在此之前需要先搭建一个示例工程,再按照以下步骤进行操作:
- 在窗口工程的
res
目录下新建一个xml
文件,例如MainWnd.xml
。 - 在
MainWnd.xml
文件中添加如下代码:
<?xml version="1.0" encoding="UTF-8"?> <Default title="采集系统" size="800,600"> <VerticalLayout> <Control name="Edit1" rect="50,50,350,30" text="Hello world!"></Control> <Control name="Button1" rect="50,120,100,30" text="提交"></Control> <Control name="ListView1" rect="400,50,350,450"></Control> </VerticalLayout> </Default>
此时我们已经具备了一个窗口界面,它包含了一个输入框、提交按钮和一个列表控件。这个列表控件将用来显示我们采集到的数据。
2.2 实现 MongoDB 数据库连接
在本节中,我们将采用 MongoDB 官方提供的 C++ 驱动程序来连接 MongoDB 数据库,并学习如何进行数据的插入和查询。
在此之前,需要我们首先安装一些依赖库:
- Boost 库:Boost 库是一个 C++ 库集合,可以帮助简化许多常见的编程任务,可以使用 NuGet 安装。
- OpenSSL 库:大多数 MongoDB C++ 驱动程序通过 TLS 安全传输数据,所以我们需要支持 TLS 的 SSL 库。可以使用 Win32 OpenSSL 安装。
在进行 MongoDB 数据库连接前,我们需要进行以下几步:
- 引入 MongoDB C++ 驱动程序的头文件:
#include <mongocxx/client.hpp> #include <mongocxx/instance.hpp>
- 初始化 MongoDB 驱动程序:
mongocxx::instance inst{};
- 创建 MongoDB 服务连接:
mongocxx::uri uri("mongodb://localhost:27017"); // 默认 MongoDB 服务端口为 27017 mongocxx::client client(uri);
- 获得要操作的数据库和集合:
auto db = client["mydb"]; // mydb 为数据库名 auto collection = db["mycol"]; // mycol 为集合名
我们已经可以对 MongoDB 数据库进行增、删、改、查等常规操作了。比如插入一个新的数据文档:
// 创建一条采集的数据文档 bsoncxx::builder::stream::document document{}; document << "title" << "标题" << "content" << "正文"; // 将该数据文档插入到 MongoDB 集合中 auto result = collection.insert_one(document.view()); std::cout << "Inserted: " << result->inserted_id() << std::endl;
查询数据库中所有数据文档:
mongocxx::cursor cursor = collection.find({}); for (auto&& element : cursor) { std::cout << bsoncxx::to_json(element) << std::endl; }
此时,我们已经建立好 MongoDB 数据库的连接,可以进行数据的存储和查询了。
2.3 编写相关数据采集代码
在本节中,我们将使用 C++ 爬虫库 curl 和第三方解析库 cJSON 来抓取并解析我们需要采集的数据。我们将得到类似如下的一个 JSON 数据:
{ "title": "采集系统", "content": "数据库+GUI" }
这个 JSON 数据可以直接插入到 MongoDB 的文档集合中。
当我们输入要采集的网址和关键字,并点击提交按钮后,程序将会去访问该页面,并搜寻其中包含该关键字的文本。如果找到了,则将标题和内容以 JSON 格式存储,并显示在我们的窗口列表控件中。
具体的实现代码如下:
-- -------------------- ---- ------- ----- -------- - ------ -------------- - ------- ------- ------- -------------------- ----- - ------ --------------------------- - ------- ---------- ------------- - ------ ------------------ - ------- ---------- --------------- - ------ --------------- - ------- ------------------ ----------------- ----- - ------ ----------- - ------- ------- ------------ --------- ------ ----------- ------ ----------- ----- --------- - -------- - ----- -------- ------ -- - ------- ------- ------------------------ ----- ------ ------- ------ ------- ----- --------- - ------ ------ - ---- ----------- - ---- ----- - ----------------------------------------------------------- ---- ------- - --------------------------- ---- ---- - ----------------- -- --- ---- -- ------ - ----------- --- - ------------------------- -- ------------ ---------------------- ------------ ------------- -- ------ --- ----------- ------- -- -- ---- -- ---------------------- ---------------------- --------------- ---------------------- ------------------ --------- ------------------------ -- -- ---- -- -- - ---- ------------- ----- ----- ------ -- ------ - ---------------------- --------- - -- - ---- -------------- ------ ---- - --------------------- ----------------------------- -------- -------- ----------------------------- ---------- -------------- ----- -------- - ------------------ -- ------------ ------- ----- ---------------------------------- ----------- -------- -- ------- -- ------ -- --------- -- ------------- --------------------------------------- -- ---------------- ---- -------- - --- --------------------- ------------------------------------- ---------------------------- ---- --------- - --------------------------------------------------------------- ------------------------- - ------------------------ -- -- ---- -- - - ------ - ------ -- - -------- -------------------- ---------- - ------------------------------------------------------------------------------ ------ ------ ------------------- --------- ------ ----- ------ ------ ----- ------ - ------ -------- - ---- - ------ ------------ --- - -------------------- ---------------------------- ---------- ------ --------- - --展开代码
这样,我们就实现了一个简单的 Windows 采集系统。其中,我们使用了 Duilib 框架和 MongoDB 数据库。
3. 总结
本文介绍了如何使用 Duilib 和 MongoDB 技术实现一个 Windows 采集系统。我们搭建了开发环境、设计了窗口界面,用 MongoDB 存储我们采集的数据,并学习了如何使用 cURL 库和 cJSON 库进行采集和解析操作。希望通过本文的学习,读者能够掌握如何使用 Duilib 和 MongoDB 技术设计和实现 Windows 程序。
参考文献
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f5c8adf6b2d6eab3e9822b