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

 

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

 

posted @ 2014-08-21 23:39  学需持  阅读(372)  评论(0编辑  收藏  举报