c++ hmtlcxx 学习之旅

最近刚网页抓取,抓取下来后需要解析,所以在网上找了一些资料,也问问我的师兄,最终结合网上的开源知识,完成了htmlcxx的使用。

vs2013.

 

首先要去下载htmlcxx:

https://github.com/dhoerl/htmlcxx

 

或者你也可以百度下去下载一个。

 

 

接下来,将文件文件解压,我用vs2013将htmlcxx.vcproj打开,点击生成。

 

生成好就可以,点击调试会有错误,我们也不需要调试。

c++ hmtlcxx 学习之旅

 

 

创建一个win32控制台,直接点击完成。

 

 

接下来将debug下的htmlcxx.lib 和文件css ,html

 

拉入你说创建的工程文件中:

c++ hmtlcxx 学习之旅

 

接下来

 

在文件源的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;

}

结果:

c++ hmtlcxx 学习之旅

 

 

这样就大功告成。

 

这里感谢博主:

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

 

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

 

你可能感兴趣的:(C++)