使用HTMLPaser解析HTML資料

2021-06-07 01:21:55 字數 1239 閱讀 6122

1, 首先我們通過 

ns::data data(ns::url(...));

得到目標得html檔案如下:

id =

"tab"

>

id =

"tab"

>

id="tab2"

>

divno attr

class=

"cls red"

>hello

id="abc"

>id

id="abc"

class=

"blue"

>id class

style=

"#a1:."

>style a1

style=

"a2"

>style a2

2,普通得處理方式可能就是通過html解析器器遍歷所有節點,挨個判斷找出目標資料。或者通過正規表示式進行字串分析,得到資料。這些方法存在邏輯複雜和 難以寫出高效穩定的正規表示式的問題。

3, 在wsi中,我們可以通過 ::wsi::html::document 類進行類似html解析器的分析工作。並且,::wsi::html::document 提供 jquery 的查詢功能,可以利用 jquery 語法,快速穩定查詢出目標節點。

4, jquery 語法: html標籤.css類[屬性=」值」] html標籤.css類[屬性=」值」] ....

說明: 父標籤 子標籤

5, 例子:

::wsi::html::document doc(::wsi::core::type_cast<::wsi::core::data>(data)); // 轉換nsdata到c++支援的core::data 類。然後開啟文件。

如果需要得到 class=

"cls red"

>hello

節點::wsi::html::document::query_result result; // 查詢的結果會以 ::wsi::html::element* 的指標形式儲存在result中。

doc.jquery(「li a.red」, result);

此時就可以對result進行處理。

::wsi::html::node const* node = (::wsi::html::node const*)result[0];

ns::string str = node->value(); // 得到 hello

BeautifulSoup解析非標準HTML的問題

beautifulsoup版本 4.3.2 在用beautifulsoup.find all 搜尋html時,遇到下面的 a href shipin donghuapian 2012 07 25 23404.html title 謙謙君子 target blank 溫潤如玉 a 可以看出 中a標籤的...

使用RestTemplate呼叫外部Http介面

使用resttemplate呼叫外部http介面 我們使用resttemplate呼叫外部介面,resttemplate可以自動轉換實體類和json字串,這樣便於我們呼叫介面。通常我們得到乙個外部介面,會告訴我們請求報文和響應報文。例如 這樣在轉換時,就會自動將companyreqheader轉換為...

nginx配置使用ssl模組配置支援HTTPS訪問

生成自簽名證書 1 伺服器上安裝mod ssl和openssl yum install mod ssl openssl 2 生成金鑰 openssl genrsa out cyz.com.key 2048 3.生成證書請求檔案,執行之後會出現一大堆要輸入的東西,輸入之後就生成.csr的檔案了 cou...