使用libtidy解析html文档的小例子一个
来源:互联网 发布:o2o软件测试计划 编辑:程序博客网 时间:2024/06/05 19:27
#ifndef PARSEPAGE_HPP#define PARFSPAGE_HPP#include <string>#include <vector>#include <tidy/buffio.h>#include <tidy/fileio.h>#include <tidy/tidy.h>#include <tidy/tidyenum.h>#include <tidy/platform.h>//! 解析html页面 class ParsePage{public: typedef std::vector<std::string> String;public: ParsePage(int rank = 0,const std::string& cur = ""):rank(rank),cur(cur) { doc = tidyCreate(); root = tidyGetRoot(doc); } ~ParsePage() { tidyRelease(doc); }public: //! 解析给定文件 bool LoadFile(const char* file) { return 1 == tidyParseFile(doc,file); } //!解析给定内存 bool LoadBuffer(const char* buffer) { return 1 == tidyParseString(doc,buffer); } //! 内容解析 void Check() { CheckHref(root); } //! 获取链接 int GetLinkNumber()const{return links.size();} std::string GetLinkByIndex(int index){return links.at(index);} private: void DoHref(TidyAttr attr); void CheckHref(TidyNode node);private: TidyDoc doc; TidyNode root; std::string cur; int rank; String links;};#endif//! ccsdu2004
libtidy是一个开源的用来诊断,分析,生成html文档的一个库
下面的例子是使用libtidy获取页面链接的例子
代码如下:
#include <boost/algorithm/string.hpp>#include "parsepage.hpp"void ParsePage::DoHref(TidyAttr attr){ std::string href(tidyAttrValue(attr)); //! 邮箱地址 if(boost::algorithm::starts_with(href,"mailto:")) { } //! 链接地址 else { if(boost::algorithm::starts_with(href,"http:")) { size_t itr = href.find_last_of('#'); if(itr != std::string::npos) { href = href.substr(0,itr); } } else { if(boost::algorithm::contains(href,"#")) return; } links.push_back(href); }}void ParsePage::CheckHref(TidyNode node){ TidyNode child; for(child = tidyGetChild(node);child;child = tidyGetNext(child)) { TidyAttr attr = tidyAttrGetHREF(child); if(attr) { DoHref(attr); } CheckHref(child); }}这个对象比较简单调用Check之后所有的页面链接在links中
- 使用libtidy解析html文档的小例子一个
- 使用LIBTIDY解析HTML文档的小例子一个
- 使用libtidy解析html文档的小例子一个
- libtidy,htmlcxx-优秀的html解析库介绍
- libtidy,htmlcxx-优秀的html解析库介绍
- 使用TIDY修复HTML文档的小例子
- jericho-html解析html的一个例子
- 有关于怎么生成一个RSS文档的小例子
- 使用存储过程的一个小例子
- 一个quartz如何使用的小例子
- 封装使用的一个小例子
- abap 指针使用的一个小例子
- 使用DOM4J解析XML的一个例子
- 使用VBA解析HTML文档
- 使用JSOUP解析HTML文档
- 使用 XPath 解析 HTML 文档
- 使用JSoup解析html文档
- 使用 XPath 解析 HTML 文档
- linux面试题集锦
- Xcode 4.1/4.2/4.2.1 免证书(iDP)开发+真机调试+生成IPA全攻略
- 将一个整型转换为整型数组例如Int num = 5546798;转为int [] {5,5,4,6,7,9,8}(不能转换为字符串)
- set_magic_quotes_runtime 和 set_magic_quotes_gpc 函数解释
- 通过sql语句获取数据库的基本信息
- 使用libtidy解析html文档的小例子一个
- http协议和web本质
- 黑马程序员——集合与泛型
- Linux下makefile教程
- DB2 purescale VS Oracle RAC
- final用法
- 【专辑】单调队列+斜率优化的DP
- 编译器如何C++的函数重载
- 对等网络中主流分布式哈希算法比较分析[收集]