1. 为什么要进行数据清洗
这是因为我们获得的网页信息包含了很多不需要的部分(如标签),同时我们需要从网页中提取 title 和 content,以便后续处理。
2. 如何进行数据清洗
主要分为三步。
2.1 第一步
通过 EnumFile 函数将 src_path 目录下的文件名(含路径)保存到 file_list 中,便于后续逐个读取。
src_path 存储的是未处理的原始信息。此步骤本质是筛选出以 .html 结尾的普通网页文件,忽略其他类型。
2.2 第二步
对筛选后的文件去标签化,提取 title 和 content 并构建 URL,存入 results 容器中。
去标签是为了去除网页中无关的样式信息(如文字大小、颜色等)。

2.3 第三步
将去标签后的信息写入 output 文件。
分步写入不同容器是为了降低代码耦合度,防止因局部问题导致整体崩溃。建议分模块编写并编译,避免一次性写完再编译可能引发的问题。
typedef struct DocInfo {
std::string title; // 文档的标题
std::string content; // 文档的内容
std::string url; // 该文档在官网中的 url
} DocInfo_t;
int main() {
std::vector<std::string> file_list;
// 第一步:调用 EnumFile,递归获取 src_path 内的文件名
if (!EnumFile(src_path, &file_list)) {
std::cout << "EnumFile error!!!" << std::endl;
return 1;
}
// 第二步:读取并解析文件内容
std::vector<DocInfo_t> results;
if (!ParseHtml(file_list, &results)) {
std::cout << "ParseHtml error" << std::endl;
return 2;
}
// 第三步:保存解析后的内容到 output
if (!SaveHtml(results, output)) {
std::cout << << std::endl;
;
}
;
}


