iOS html解析1(包含中文字元)

2021-09-01 10:13:59 字數 2572 閱讀 5713

htmlparser

方法可以參考

tfhpple方法的使用可以看

tfhpple,因為它很簡單,也好用,但是它的功能不是很完完善。比如,不能獲取children node。它是用xpath來定位和解析html或者xml。

xpath教程:

nsdata *htmldata = [nsstring stringwithcontentsoffile:[nsurl urlwithstring:@""] encoding:nsutf8stringencoding error:nil];
會報:[nsurl getfilesystemrepresentation:maxlength:]: unrecognized selector sent to instance 0x6bcad20

nsdata *htmldata  = [nsstring stringwithcontentsofurl:[nsurl urlwithstring:@""] encoding:nsutf8stringencoding error:nil];
匹配還是有問題

應該這個更合適點

nsdata *htmldata = [nsdata datawithcontentsofurl:[nsurl urlwithstring:@""]];
下面講一下我自己實現的過程中的關鍵**:

解析非utf-8頁面的思路 :

把網路流返回的nsdate的gb2312(假設是這個)轉換成tfhpple能正確解析的utf-8編碼的nsdata;

將其中一行的轉換成utf-8形式的

可以採用如下兩種方案解決:

方法一:

//轉換成gbk編碼

nsstringencoding gbencoding = cfstringconvertencodingtonsstringencoding(kcfstringencodinggb_18030_2000);

nsdata *htmldata = [nsdata datawithcontentsofurl:[nsurl urlwithstring:@"可以是非utf-8的網頁"]];

nsstring *htmlstr = [[[nsstring alloc] initwithdata:htmldata encoding:gbencoding] autorelease];

方法二:

nsdata *htmldata = [nsdata datawithcontentsofurl:[nsurl urlwithstring:@"可以是非utf-8的網頁"]];

cfstringref bgcfstr = cfstringcreatewithbytes(null, [htmldata bytes], [htmldata length], kcfstringencodinggb_18030_2000, false);

nsstring *gbhtmlstr = (nsstring *)bgcfstr;

方法一或者二選其一,然後加下面的**就可以實現簡單解析了

nsstring *utf8htmlstr = [htmlstr stringbyreplacingoccurrencesofstring:@"" 

withstring:@""];

nsdata *htmldatautf8 = [utf8htmlstr datausingencoding:nsutf8stringencoding];

tfhpple *xpathparser = [[tfhpple alloc] initwithhtmldata:htmldatautf8];

nsarray *elements = [xpathparser search:@"//option"];

tfhppleelement *element = [elements objectatindex:0];

nsstring *h3tag = [element content];

nslog(@"%@",h3tag);

mlabel.text = h3tag;

[xpathparser release];

[htmldata release];

很有用的**:

碰到的問題:nsdata --》nsstring

nsdata

*htmldata = [htmlstr datausingencoding:nsutf8stringencoding];

nsstring --》nsdata

nsstring

*htmlstr = [[[

nsstring

alloc] initwithdata:htmldata encoding:nsutf8stringencoding] autorelease];

iOS html解析1(包含中文字元)

htmlparser 方法可以參考 tfhpple方法的使用可以看 tfhpple,因為它很簡單,也好用,但是它的功能不是很完完善。比如,不能獲取children node。它是用xpath來定位和解析html或者xml。xpath教程 具體的方法可以參考 英文 介紹 objective c nsd...

藍芽4 0(包含BLE)簡介

國際藍芽聯盟 bt sig,ti 是 企業成員之一 通過的乙個標準藍芽無線協議。主要的新特性是在藍芽標準版本上新增了4.0 藍芽規範 2010 年6 月 針對無線應用程式不 低功耗 低延遲 小資料報 癿傳輸需求 主要是圍繞手機和個人電腦系統 但也可以用亍其他應用 程式 設計蘋果外圍無需 mfi mf...

20 包含min的函式

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 在該棧中,呼叫min push及pop的時間複雜度應為o 1 把每次壓棧時的最小元素 每次新壓棧元素和之前的最小元素進行比較 放進另外乙個專門存放最小值的輔助棧中。例如 1 初始空棧,壓入元素3,目前3是最小值,放入輔助棧,...