日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

通过tinyxml解析百度热词榜单

發(fā)布時(shí)間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过tinyxml解析百度热词榜单 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

百度熱詞榜單

初學(xué)TinyXml,盯上了解析百度熱詞榜單。通過curl獲取rss地址上的數(shù)據(jù)。

由于TinyXml不支持,所以要轉(zhuǎn)換為UTF-8格式,命令為

iconv -f gb2312 -t utf-8 baidutop.xml > baidutop.xml

寫得很爛,寫的時(shí)候,心里對(duì)內(nèi)存管理部分總是瞻前顧后的,真是奇怪啊。

View Code
#include <iostream> 
#include
<tinyxml/tinyxml.h>
#include
<tinyxml/tinystr.h>

#include
<vector>

using namespace std;

struct CHrefLink
{
string word;
string url;
};

struct CBaiDuTopKey
{
int rank;
long account;

string keyWord;
string wordUrl;
vector
<CHrefLink> href;
};



void GetHotRank(vector <CBaiDuTopKey> & hot,const char *xml);
void ExtraHrefLink(TiXmlElement *hrefElement,CHrefLink &link);
void ExtraHrefLink(TiXmlElement *hrefElement,string & word,string & url);
void ExtraKeyWords(TiXmlElement *tableColumn,vector <CHrefLink> &vKey);
int main()
{
//創(chuàng)建一個(gè)XML的文檔對(duì)象。
TiXmlDocument *myDocument = new TiXmlDocument("baidutop.xml");
myDocument
->LoadFile();

//獲得根元素
TiXmlElement *RootElement = myDocument->RootElement();

//輸出根元素名稱
cout << RootElement->Value() << endl;

//解析獲得有用的信息
TiXmlElement *channelElement = RootElement->FirstChildElement();
string title = channelElement->FirstChildElement()->GetText();
TiXmlElement
*itemElement = (TiXmlElement *)channelElement->LastChild();


int ttl = atoi(((TiXmlElement *)itemElement->PreviousSibling())->GetText());

TiXmlElement
* descriptionElement = (TiXmlElement *)(itemElement->LastChild());

vector
<CBaiDuTopKey> hotword;

GetHotRank(hotword,descriptionElement
->GetText());



cout
<<"Name :"<<title<<"\t Life Time:"<<ttl<<endl;
for(vector<CBaiDuTopKey>::iterator iter = hotword.begin();
iter
!=hotword.end();++iter)
{
cout
<<"\nrank \t"<<(*iter).rank<<"\t amount:"<<(*iter).account;
cout
<<"\nkeyword\t"<<(*iter).keyWord<<"\nurl\t"<<(*iter).wordUrl;
}
cout
<<endl;
delete myDocument;
return 0;
}


void GetHotRank(vector <CBaiDuTopKey> & hotVector,const char *xml)
{
TiXmlDocument
*doc = new TiXmlDocument();

int row = 0;


doc
->Parse(xml);
TiXmlElement
*tableElement = doc->RootElement();
//
TiXmlElement *tableRoot = tableElement->FirstChildElement();
if(!tableRoot)
{
cout
<<"errro !"<<endl;
return ;
}
//第一個(gè)元素為table的表頭,剔除
for(TiXmlElement *tableRow = tableRoot->FirstChildElement()->NextSiblingElement();
tableRow;
tableRow
= tableRow->NextSiblingElement())
{
CBaiDuTopKey rankedword;
TiXmlElement
*tableColumn = tableRow->FirstChildElement();

//關(guān)鍵詞排名
rankedword.rank=atoi(tableColumn->GetText());
tableColumn
= tableColumn->NextSiblingElement();
//關(guān)鍵詞
ExtraHrefLink(tableColumn->FirstChildElement(),rankedword.keyWord,rankedword.wordUrl);
tableColumn
= tableColumn->NextSiblingElement();
//搜索量
rankedword.account=atol(tableColumn->GetText());
//鏈接
tableColumn = tableColumn->NextSiblingElement();

hotVector.push_back(rankedword);
}
delete doc;
}
void ExtraHrefLink(TiXmlElement *hrefElement,CHrefLink &link)
{
link.url
= hrefElement->FirstAttribute()->Value();
link.word
= hrefElement->GetText();

}
void ExtraHrefLink(TiXmlElement *hrefElement,string & word,string & url)
{
url
= hrefElement->FirstAttribute()->Value();
word
= hrefElement->GetText();

}
void ExtraKeyWords(TiXmlElement *tableColumn,vector <CHrefLink> &vKey)
{
TiXmlElement
*hrefElement = tableColumn->FirstChildElement();
CHrefLink links;
while(hrefElement)
{
ExtraHrefLink(hrefElement,links);
vKey.push_back(links);
hrefElement
= hrefElement->NextSiblingElement();
}
}

轉(zhuǎn)載于:https://www.cnblogs.com/westfly/archive/2011/06/12/2078961.html

總結(jié)

以上是生活随笔為你收集整理的通过tinyxml解析百度热词榜单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。