hpple使用幾個注意點

2021-06-20 04:42:06 字數 1546 閱讀 1676

hpple功能有限,使用的時候要注意乙個原則:如果頁面複雜,節點較多,解析的html需要先擷取,xpath路徑盡可能短,使用簡單語法。

xpath語法不再贅述,本文的話題是分析得到的乙個tfhppleelement陣列。

對於陣列裡的某個tfhppleelement可能有如下結構:

,

);nodechildarray = (

);nodename = a;

},);

nodename = div;

}

乙個完備的節點一般包括屬性陣列,子節點陣列,節點名三部分。乙個節點的型別由節點名字決定。像上面就包含了div,a和text三種節點。任一節點是字典型別的。

假設我們令elem為指向上述結構的指標,則

[elem children];得到子節點陣列

[elem childrenwithtagname:@"text"];可以得到div節點的所有文字子節點。

[elem firstchildrenwithtagname:@"text"];則可以得到div節點的第乙個文字節點。

[elem tagname]; 則得到@"div"

[elem attributes];可以得到div的屬性字典,顯然這裡沒

這裡我們引入指向子節點a的指標a,則

[a objectforkey:@「href」];得到@"/character/ch0146096/?ref_=ttfc_fc_cl_t1"

[a firsttextchild]content]; 得到@「"tyrion lannister"

[a text];此處和上句效果一致,返回第乙個文字節點的內容

但是[elem text]為@"\n \u00a0"

本例中我們沒用到- (nsarray*) childrenwithclassname:(nsstring*)classname和- (tfhppleelement *) firstchildwithclassname:(nsstring*)classname

顯然class和tagname是地位等同的,對於如下情況,我們就可以使用上述方法

a paragraph.

note that this is an important paragraph.

設elem指向body節點,[elem childrenwithclassname:@"intro"]列印出來就是:

elem is (

"\n    );

\n    nodechildarray =     (\n               

\n    );

\n    nodename = h1;\n}"

)

補充一點,對於a的某個屬性節點,結構為

);nodename = href;

}

乙個屬性節點沒有屬性陣列,只有文字子節點陣列和節點名。

hpple 簡單使用

最近專案使用到hpple,簡單說一下使用方式,做做筆記 let responsedata response as nsdata let utf8html responsedata.stringgbk stringbyreplacingoccurrencesofstring gb2312 withst...

DLL使用的幾個注意點

dll 的幾個注意點 1.dll 重定向技術,windows2000之後的功能,將優先從exe執行目錄尋找 之前都是優先從system下面尋找的 2.dll的入口函式dllmain 以及入口引數dll process attach等 dll通過使用計數來記錄載入次數 3.dll的延遲載入,可以在使用...

CEF使用的幾個注意點

cef為chrome瀏覽器的切入其他瀏覽器中的輕量級框架。開發的客戶端的時候,這是作為介面顯示的首先,可以增強客戶的易變性,可塑性。1.cef如何禁用右鍵屬性 手動寫乙個cclient來繼承 cefmenuhandler這個抽象類,然對其下面的純虛函式進行重寫 1 virtual bool onbe...