当前位置: 首页 > news >正文

ICP备案域名网站百度搜索结果优化

ICP备案域名网站,百度搜索结果优化,重庆开办企业一网通平台,凡科网之前做的网站在哪看阅读导航 一、网页数据下载二、编写数据去标签与数据清洗的模块 Parser✅boost 开发库的安装1. 基本思路2. 详细讲解#xff08;1#xff09;程序递归遍历目录#xff0c;收集所有HTML文件的路径#xff08;2#xff09;对每个HTML文件进行解析#xff0c;提取出文档标题… 阅读导航 一、网页数据下载二、编写数据去标签与数据清洗的模块 Parser✅boost 开发库的安装1. 基本思路2. 详细讲解1程序递归遍历目录收集所有HTML文件的路径2对每个HTML文件进行解析提取出文档标题、内容和URL3将这些信息保存到一个文本文件中每个文档信息之间用特定分隔符隔开 三、结果验证1. 编辑makefile文件2. 生成可执行程序 一、网页数据下载 下载网页界面链接 打开了上面的网页以后下载boost_1_84_0.tar.gz压缩包就可以了。 下载以后打开Linux建立相关目录在这个目录下输入rz -E命令选中刚才我们下载的压缩包把压缩包传输进Linux机器中。 在控制台输入tar xzf boost_1_84_0.tar.gz进行解压 解压出来上面的这些文件我们需要的数据是在文件夹doc/html里面我们把它复制到我们创建的data/input文件夹里面使用cp -rf boost_1_84_0/doc/html/* data/input 把刚才解压过的文件删除了就可以了。 我们已经收集到了网页的初始信息但是在这些信息中存在着一些无用的网页标签和其他数据需要进行清理处理以便我们能够更好地分析和利用这些数据。 二、编写数据去标签与数据清洗的模块 Parser ✅boost 开发库的安装 PS我们要先在Linux机器上安装Boost库sudo yum install -y boost-devel 1. 基本思路 程序递归遍历目录收集所有HTML文件的路径对每个HTML文件进行解析提取出文档标题、内容和URL将这些信息保存到一个文本文件中每个文档信息之间用特定分隔符隔开。 ✅整个处理流程由main函数协调涉及文件操作、字符串解析和错误处理等技术旨在高效地从HTML文件中提取结构化数据为后续的数据使用或分析提供便利。 2. 详细讲解 1程序递归遍历目录收集所有HTML文件的路径 程序代码 // 遍历目录获取所有HTML文件的路径 bool EnumFile(const std::string src_path, std::vectorstd::string *files_list) {namespace fs boost::filesystem;fs::path root_path(src_path);// 检查路径是否存在if (!fs::exists(root_path)) {std::cerr src_path not exists std::endl;return false;}// 使用递归目录迭代器遍历目录fs::recursive_directory_iterator end;for (fs::recursive_directory_iterator iter(root_path); iter ! end; iter) {// 跳过非普通文件if (!fs::is_regular_file(*iter)) {continue;}// 跳过非HTML文件if (iter-path().extension() ! .html) {continue;}// 将HTML文件路径添加到列表中files_list-push_back(iter-path().string());}return true; } 代码解释 函数接受一个字符串参数src_path这个参数表示需要遍历的目录路径。函数的返回类型是bool表示操作的成功与否。函数还接受一个指向std::vectorstd::string的指针作为参数这个向量用于存储找到的HTML文件路径。 在函数内部首先创建了一个boost::filesystem的path对象用于表示传入的源路径。接着使用fs::exists函数检查这个路径是否存在。如果路径不存在函数输出错误信息并返回false。 如果路径存在函数使用fs::recursive_directory_iterator来创建一个迭代器这个迭代器可以遍历目录及其所有子目录。迭代器的结束状态由end变量表示。在迭代过程中函数检查每个文件是否是普通文件fs::is_regular_file如果不是则跳过。然后检查文件扩展名是否为.html如果不是HTML文件也跳过。 对于每个符合条件的HTML文件使用iter-path().string()获取其完整的路径字符串并将其添加到传入的files_list向量中。 2对每个HTML文件进行解析提取出文档标题、内容和URL 程序代码 // 辅助函数用于解析HTML文件中的标题 static bool ParseTitle(const std::string file, std::string *title) {// 查找标题起始位置std::size_t begin file.find(title);if(begin std::string::npos){ // 如果未找到标题起始标记return false; // 返回失败}// 查找标题结束位置std::size_t end file.find(/title);if(end std::string::npos){ // 如果未找到标题结束标记return false; // 返回失败}begin std::string(title).size(); // 调整起始位置跳过titleif(begin end){ // 如果起始位置在结束位置之后return false; // 返回失败}// 提取标题内容*title file.substr(begin, end - begin);return true; // 返回成功 }// 辅助函数用于解析HTML文件中的内容去除HTML标签 static bool ParseContent(const std::string file, std::string *content) {//去标签,基于一个简易的状态机enum status{LABLE, // 标签状态CONTENT // 内容状态};enum status s LABLE; // 初始化状态为标签状态for( char c : file){ // 遍历文件中的每个字符switch(s){ // 根据当前状态进行处理case LABLE: // 当前状态为标签状态if(c ) s CONTENT; // 如果遇到切换到内容状态break;case CONTENT: // 当前状态为内容状态if(c ) s LABLE; // 如果遇到切换到标签状态else {//这里不需要保留原始文件中的\n,因为后面要用\n作为html解析之后文本的分隔符if(c \n) c ; // 将换行符替换为空格content-push_back(c); // 将字符添加到内容中}break;default:break;}}return true; // 返回成功 }// 辅助函数用于构建文档的URL static bool ParseUrl(const std::string file_path, std::string *url) {// 构造URL头部std::string url_head https://www.boost.org/doc/libs/1_78_0/doc/html; // 提取URL尾部std::string url_tail file_path.substr(src_path.size());// 拼接URL*url url_head url_tail;return true; // 返回成功 }// 解析HTML文件提取标题、内容和URL bool ParseHtml(const std::vectorstd::string files_list, std::vectorDocInfo_t *results) {for (const std::string file : files_list) {// 读取文件内容std::string file_content;if (!ns_util::FileUtil::ReadFile(file, file_content)) {continue;}// 解析标题DocInfo_t doc;if (!ParseTitle(file_content, doc.title)) {continue;}// 解析内容去除HTML标签if (!ParseContent(file_content, doc.content)) {continue;}// 解析URLif (!ParseUrl(file, doc.url)) {continue;}// 将解析结果添加到结果集中results-push_back(std::move(doc));}return true; }代码解释 ParseTitle 函数 这个函数的目的是从一个HTML文件字符串中提取标题title标签内的内容。它首先查找title标签的开始位置如果没有找到返回false。然后它查找/title标签的结束位置如果没有找到同样返回false。如果找到了开始和结束位置函数会计算标题的实际长度并使用substr方法提取标题内容。最后将提取的标题内容通过指针参数title返回并返回true表示成功。 ParseContent 函数 此函数用于去除HTML文件内容中的所有标签只保留纯文本。它使用一个简单的状态机来区分标签和内容状态。遍历文件中的每个字符如果是标签状态LABLE遇到字符则切换到内容状态CONTENT。在内容状态下遇到字符则切换回标签状态其他字符除了换行符\n将其替换为空格则添加到内容字符串中。最终通过指针参数content返回处理后的纯文本内容并返回true表示成功。 ParseUrl 函数 这个函数用于构建一个文档的完整URL。它首先定义了一个URL的基础部分然后从文件路径中提取特定部分作为URL的尾部。通过拼接基础URL和尾部路径构建完整的URL字符串。通过指针参数url返回构建的URL并返回true表示成功。 ParseHtml 函数 这是一个整合函数它接收一个包含HTML文件路径的向量并返回一个包含解析结果的DocInfo_t类型的向量。对于每个文件路径它首先读取文件内容然后依次调用ParseTitle、ParseContent和ParseUrl函数来提取标题、内容和URL。如果任何一个步骤失败它会跳过当前文件并继续处理下一个文件。最后将所有解析成功的文档信息添加到结果集中并返回true表示解析过程完成。 这些函数共同工作提供了一个从HTML文件中提取有用信息的解决方案。它们可以用于构建搜索引擎索引、内容摘要或其他需要从HTML中提取数据的场景。代码结构清晰通过模块化的设计提高了可读性和可维护性。 3将这些信息保存到一个文本文件中每个文档信息之间用特定分隔符隔开 程序代码 // 保存解析结果到文件 #define SEP \3 // 定义分隔符 bool SaveHtml(const std::vectorDocInfo_t results, const std::string output) {std::ofstream out(output, std::ios::out | std::ios::binary); // 以二进制方式进行写入if (!out.is_open()) {std::cerr open output failed! std::endl;return false;}// 遍历结果集将每个文档的信息写入文件for (auto item : results) {std::string out_string;out_string item.title;out_string SEP;out_string item.content;out_string SEP;out_string item.url;out_string \n;out.write(out_string.c_str(), out_string.size());}out.close(); // 关闭文件return true; }代码解释 定义分隔符 使用预处理器指令#define定义了一个名为SEP的宏其值为\3。这个宏用于在保存到文件的文档信息之间创建一个分隔符以便在后续读取文件时能够区分不同的文档记录。 打开文件 使用std::ofstream创建一个输出文件流out尝试以二进制模式打开指定的输出文件。这种模式可以确保写入的数据不会被转换或解释为文本文件中的字符而是以原始字节形式保存。 检查文件是否成功打开 通过调用out.is_open()检查文件是否成功打开。如果文件没有成功打开则输出错误信息到标准错误流std::cerr并返回false。 写入文档信息 如果文件成功打开函数遍历results向量中的每个DocInfo_t结构体。对于每个结构体创建一个字符串out_string并将结构体中的title、content和url字段依次拼接每个字段后跟一个定义好的分隔符SEP并在每条记录的末尾添加换行符\n。使用out.write()函数将out_string的内容写入到文件中。out.write()接受两个参数指向要写入数据的指针和要写入的字节数。 关闭文件 在所有文档信息都写入文件后调用out.close()关闭文件。这是一个好的编程实践可以确保所有的数据都已经被刷新到磁盘并且释放与文件相关的资源。 整体而言SaveHtml函数负责将解析后的文档信息以一种结构化的方式保存到文件中以便后续的处理或分析。通过使用二进制模式和特定的分隔符该函数确保了数据的完整性和可读性。 三、结果验证 完成了上述代码后我们的基本架构已经基本完成。接下来我们需要编写一个名为makefile的文件以便进行编译和验证结果。 1. 编辑makefile文件 Parserparser.PHONY:all all:$(Parser)$(Parser):parser.cpp$(cpp) -o $ $^ -lboost_system -lboost_filesystem -stdc11.PHONY:clean clean:rm -f $(Parser) 2. 生成可执行程序 在控制台输入make指令会生成一个名字为parser的可执行程序 输入./parser命令执行可执行程序打开文件data/raw_html/raw.txt就可以看到数据处理后的结果了如下图PS/3在ASCII码表中表示^c
http://www.pierceye.com/news/346704/

相关文章:

  • 做网站不赚钱潍坊制作网站的公司
  • 网站城市切换代码手机微信官方网站
  • 福州建设招聘信息网站动漫设计专业哪个学校比较好
  • 网站建设需要哪些准备wordpress调用单页面跳转
  • 小公司使用的网站开发电子商务毕业设计 网站建设
  • 简单的个人网站模板网站建设费记什么科目
  • 中国建设银行宁波分行网站一般网站空间要多大
  • 做简单视频网站自己看廊坊专门做网站
  • 做贸易网站科技型中小企业服务平台登录
  • 网站怎么接广告赚钱net创建网站之后怎么做
  • 做网站如何让盈利wordpress链接样式表
  • 网站建设与管理计划谷歌浏览器官网下载手机版
  • 做请帖的网站上海阳性增多
  • 有回定ip怎么做网站青岛建设集团招聘信息网站
  • 淘宝内部卷网站怎么做智慧团建网站登录忘记密码
  • 网站建设前十名建站系统cms
  • 第三方网站开发的商家厦门广告公司网站建设
  • 网站建设基础条件临猗网站制作
  • 建设博客网站步骤常州网站建设百科
  • 门户网站 管理系统wordpress 微信图标
  • 广元网站建设广元莱芜论坛二手车
  • 山东省建设工程质量监督网站广州软件合作中心
  • 郑州网站建设怎么样通州建设局网站
  • 免费网站建设福州怎么修改网站主页
  • 深圳企业建站设计公司wordpress不显示样式
  • 外贸网站商城广东省建设协会网站
  • 杭州制作企业公司网站wordpress数据库添加用户
  • 主域名进入网站广告标识标牌制作厂家
  • 网站建设基础流程摘要专题网站建设策划
  • 滁州网站建设电话网站建设与网站优化