真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言處理html go語(yǔ)言處理視頻

golang怎么把html解析成map

Golang如何解析Html代碼

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供八公山網(wǎng)站建設(shè)、八公山做網(wǎng)站、八公山網(wǎng)站設(shè)計(jì)、八公山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、八公山企業(yè)網(wǎng)站模板建站服務(wù),十年八公山做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

用Golang的朋友都知道如果我們要從HTML中提取一些內(nèi)容、比如title或者是h2在或者是一些其他的HTML的內(nèi)容、在Golang里面我們?nèi)绻约簩懘a來(lái)提取還是相當(dāng)?shù)穆闊┑模?/p>

由于我之前在寫Pyhon的爬蟲(chóng)的時(shí)候也需要解析HTML標(biāo)簽;所以用過(guò)PyQuery和BS4.這次在用Golang寫爬蟲(chóng)的時(shí)候就留意了一下是否有Golang版本的Query。github是個(gè)好地方;上面很找到很多開(kāi)源的代碼可以用;包括GoQuery。

所以這次會(huì)介紹一下如何用GoQuery來(lái)解析HTML元素。

導(dǎo)入Goquery模塊

package mainimport ( "fmt" "github點(diǎn)抗 /opesun/goquery")其實(shí)還有一個(gè)github點(diǎn)抗 /PuerkitoBio/goquery的goquery模塊、但是配置環(huán)境經(jīng)常出差就沒(méi)有選擇

Goquery的各種用法

goquery有Jquery的大部分特性;如果你熟悉Jquery的話用Goquery就很簡(jiǎn)單了

解析HTML的title

var url = ""p, err := goquery.ParseUrl(url)if err != nil { panic(err)} else { pTitle := p.Find("title").Text()//直接提取title的內(nèi)容 fmt.Println(pTitle)}

命令行下運(yùn)行g(shù)o run page.go之后得到輸出

“Smart Testing | 專注于軟件測(cè)試領(lǐng)域的技術(shù)討論和研究、關(guān)注IT互聯(lián)網(wǎng)、WordPress技巧的個(gè)人博客”

解析HTML內(nèi)容

如果要得到HTML的內(nèi)容就更簡(jiǎn)單了fmt.Println(p.Html())//.Html()得到html內(nèi)容

獲取h2/h1之類的標(biāo)簽內(nèi)容

class := p.Find("h2").Text()fmt.Println(class, "/n")

我們可以使用Find()來(lái)查找需呀哦的標(biāo)簽;并且用.Text()來(lái)顯示標(biāo)簽的內(nèi)容

解析提取class的內(nèi)容

如果要解析class的內(nèi)容;需要在Find(".")加一個(gè).

下面我們要提取class”entry-title”里面、后面的”href”的URL地址

由于超過(guò)1條內(nèi)容所以不能用Text()來(lái)打印結(jié)果;需要用for來(lái)循環(huán)一下;

t := p.Find(".entry-title a")for i := 0; i t.Length(); i++ {d := t.Eq(i).Attr("href")fmt.Println(d)}

輸出結(jié)果如下

其實(shí)就是首頁(yè)里面的4篇文章的地址

如果想得到html里面所有的herf

fmt.Println(p.Find("").Attrs("href"))

用上面一行代碼就可以得到HTML里面全部的href內(nèi)容了

判斷元素是否存在

如果想要判斷一個(gè)元素是否在HTML里面;可以使用下面的代碼fmt.Println(p.Find("div").HasClass("entry-content"))

判斷div下面有沒(méi)有“entry-content”的class元素;有返還true;沒(méi)有返回false

golang——json的html標(biāo)簽轉(zhuǎn)義問(wèn)題

json的Marshal 用來(lái)對(duì)slice,map,struct等結(jié)構(gòu)化類型數(shù)據(jù)轉(zhuǎn)義成[]byte/string,UnMarshal方法是用來(lái)對(duì)[]byte/string轉(zhuǎn)義成指定結(jié)構(gòu)的interface。但在處理html標(biāo)簽字符中,會(huì)存在轉(zhuǎn)義問(wèn)題。Marshal方法默認(rèn)把html標(biāo)簽中的'', '' , ''字符轉(zhuǎn)義成unicode,為強(qiáng)制為有效UTF-8的JSON字符串,用Unicode替換符號(hào)替換無(wú)效字節(jié)。

go doc原文

Marshal的源碼

這一行encOpts{escapeHTML: true}),這里的true導(dǎo)致標(biāo)簽被轉(zhuǎn)義。

針對(duì)上述問(wèn)題,有兩種解決辦法,第一種是替換上述三個(gè)tag,第二種是SetEscapeHtml(false);

輸出:

組件分享之后端組件——基于Go語(yǔ)言的HTML和CSS網(wǎng)站生成器Hugo

近期正在探索前端、后端、系統(tǒng)端各類常用組件與工具,對(duì)其一些常見(jiàn)的組件進(jìn)行再次整理一下,形成標(biāo)準(zhǔn)化組件專題,后續(xù)該專題將包含各類語(yǔ)言中的一些常用組件。歡迎大家進(jìn)行持續(xù)關(guān)注。

本節(jié)分享一個(gè)基于Go語(yǔ)言的HTML和CSS網(wǎng)站生成器 hugo ,它針對(duì)速度、易用性和可配置性進(jìn)行了優(yōu)化。Hugo 獲取一個(gè)包含內(nèi)容和模板的目錄,并將它們呈現(xiàn)為一個(gè)完整的 HTML 網(wǎng)站。Hugo 依賴于 Markdown 文件和元數(shù)據(jù)的前端,你可以從任何目錄運(yùn)行 Hugo。這適用于您沒(méi)有特權(quán)帳戶的共享主機(jī)和其他系統(tǒng)。例如我們?nèi)粘>帉懸恍┎┛臀恼拢M(jìn)行快速生成一套靜態(tài)頁(yè)面進(jìn)行分享時(shí)可以使用它來(lái)進(jìn)行生成一套靜態(tài)頁(yè)面作為我們的博客部署基礎(chǔ)。

它支持大量的主題模板,我們可以通過(guò) 進(jìn)行選擇相關(guān)的主題使用,有興趣的小伙伴可以進(jìn)行深入研究一下


網(wǎng)頁(yè)標(biāo)題:go語(yǔ)言處理html go語(yǔ)言處理視頻
URL網(wǎng)址:http://weahome.cn/article/ddjdshj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部