首页 > 代码库 > c++ hmtlcxx 学习之旅

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 _stricmpusing 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

 

同时谢谢开源同袍的努力分享。