vs2010環境 c++ 使用htmlcxx解析html .轉


vs2010環境 c++ 使用htmlcxx解析html

from http://blog.csdn.net/q408384053/article/details/8070627

 

因為最近在弄一個獲取課表的程序,課表的內容來自教務系統網站,所以需要解析html。然后我就在網上搜索”c++解析html“,然后就找到了htmlcxx這個開源庫,下載下來,發現不會使用它,然后又在網站上搜索相關資料。最后找到一個博客(http://www.cnblogs.com/zhanglanyun/),然后用email聯系了他,解決了問題,很感謝他!

接着說如何使用(作為參考,可能在別人的電腦上和我這有些區別):

1.下載htmlcxx庫,我下的是tar.gz格式的,然后用解壓軟件將它解壓出來。

2.找到一個vs的工程文件htmlcxx.vcproj(舊版本的vs工程),打開打,直接編譯可能會提示有一個錯誤(因為在我電腦里出現了),錯誤指向了一個常字符指針(const char *),如下圖,然后只需要把后面的引號刪掉,重新打一次,再編譯,就可以成功編譯了。

3.編譯完成之后,工程生成了一個lib靜態庫文件。

4.但是這個庫下載下來是不支持中文的,也就是說比如html中標簽里含有中文,就會出錯(這是我在獲取源代碼時,因為獲取不完全,導致程序出錯,才發現的)。如果出現了這個問題,可以查看以下兩個博客,里面有解決方法。

http://my.oschina.net/leeeryan/blog/9914

http://blog.csdn.net/schoolers/article/details/6891061

5.然后在你的工程里面設置vc的包含目錄和庫目錄,把htmlcxx文件夾包含,然后庫目錄包含剛才生成的lib的文件夾。另外,也可以將剛生成的lib拷貝到你的工程目錄下,用#pragma (lib, "xxxx.lib")加載靜態鏈接庫。

6.接着,在 工程屬性->c/c++->代碼生成 里面將運行庫設置為/MTd。

這就可以使用了。

如何使用呢?

以控制台為例

1.#include <htmlcxx/html/ParserDom.h>

2. #include <htmlcxx/html/utils.h>

3.使用命名空間,using namespace htmlcxx

4.

  1. HTML::ParserDom parser ;        //可以用來將html代碼轉換成dom樹   
  2. tree<HTML::Node> dom ;            //用來儲存html各個節點   
  3. tree<HTML::Node>::iterator iterator ; //樹的迭代器   
  4.   
  5. iterator = dom.begin () ;               //得到dom的第一個節點   
  6. iterator->tagName () ;                  //獲得節點的標簽名   
  7. iterator->parserAttributes () ;         //附上節點屬性   
  8. iterator->Attribute ("href").second ;   //此行執行需要上行,這相當於獲取標簽的href屬性,之所以有second,因為Attribute ("attributeName")返回了一個pair  
HTML::ParserDom parser ;		//可以用來將html代碼轉換成dom樹
tree<HTML::Node> dom ;			//用來儲存html各個節點
tree<HTML::Node>::iterator iterator ;	//樹的迭代器

iterator = dom.begin () ;               //得到dom的第一個節點
iterator->tagName () ;                  //獲得節點的標簽名
iterator->parserAttributes () ;         //附上節點屬性
iterator->Attribute ("href").second ;   //此行執行需要上行,這相當於獲取標簽的href屬性,之所以有second,因為Attribute ("attributeName")返回了一個pair

在博客記錄一下,方便以后使用。若有說的不對的地方,歡迎指出。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM