c++ hmtlcxx 学习之旅
最近刚网页抓取,抓取下来后需要解析,所以在网上找了一些资料,也问问我的师兄,最终结合网上的开源知识,完成了htmlcxx的使用。
vs2013.
首先要去下载htmlcxx:
https://github.com/dhoerl/htmlcxx
或者你也可以百度下去下载一个。
接下来,将文件文件解压,我用vs2013将htmlcxx.vcproj打开,点击生成。
生成好就可以,点击调试会有错误,我们也不需要调试。
创建一个win32控制台,直接点击完成。
接下来将debug下的htmlcxx.lib 和文件css ,html
拉入你说创建的工程文件中:
接下来
在文件源的CPP中加入代码
#include "stdafx.h" #include <string.h> #include <iostream> #include "html/ParserDom.h" #include "html/utils.h" #include <fstream> #if defined(WIN32) && defined(_DEBUG) char* locale = setlocale(LC_ALL, ".OCP"); #endif #pragma comment(lib, "htmlcxx.lib") #define strcasecmp _stricmp using namespace std; using namespace htmlcxx; int _tmain(int argc, _TCHAR* argv[]) { //UseHtmlCxxAnalysisHtmlStringTestCase(); //解析一段Html代码 string html = "<html><body>比</body></html>"; HTML::ParserDom parser; tree<HTML::Node> dom = parser.parseTree(html); //输出整棵DOM树 cout << dom << endl; //输出树中所有的超链接节点 tree<HTML::Node>::iterator it = dom.begin(); tree<HTML::Node>::iterator end = dom.end(); for (; it != end; ++it) { if (strcasecmp(it->tagName().c_str(), "A") == 0) { it->parseAttributes(); cout << it->attribute("href").second << endl; } } //输出所有的文本节点 it = dom.begin(); end = dom.end(); for (; it != end; ++it) { if ((!it->isTag()) && (!it->isComment())) { cout << it->text(); } }*/ cout << endl; cin.get(); return 0; }
结果:
这样就大功告成。
这里感谢博主:
http://www.cnblogs.com/zhanglanyun/archive/2011/10/21/2220647.html
http://www.cppblog.com/luonjtu/archive/2009/03/13/76332.html
http://blog.csdn.net/farcall/article/details/20378475
同时谢谢开源同袍的努力分享。