前端之家收集整理的这篇文章主要介绍了
Golang如何解析Html代码,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
301_2@用Golang的朋友都知道如果我们要从HTML中
提取一些
内容、比如title或者是h2在或者是一些其他的HTML的
内容、在Golang里面我们如果要自己写
代码来
提取还是相当的麻烦的;
@H_
301_2@由于我之前在写Pyhon的爬虫的时候也需要解析HTML
标签;所以用过PyQuery和BS4.这次在用Golang写爬虫的时候就留意了一下是否有Golang版本的Query。github是个好地方;上面很找到很多开源的
代码可以用;
包括GoQuery。
@H_
301_2@所以这次会介绍一下如何用GoQuery来解析HTML元素。
@H_
301_2@
导入Goquery模块
package main
import (
"fmt"
"github.com/opesun/goquery"
)
其实还有一个github.com/PuerkitoBio/goquery的goquery模块、但是配置环境经常出差就没有选择
Goquery的各种用法
goquery有Jquery的大部分特性;如果你熟悉Jquery的话用Goquery就很简单了
解析HTML的title
var url = "http://www.hiadmin.org/"
p,err := goquery.ParseUrl(url)
if err != nil {
panic(err)
} else {
pTitle := p.Find("title").Text()//直接提取title的内容
fmt.Println(pTitle)
}
@H_
301_2@命令行下运行go run page.go之后得到
输出
“Smart Testing | 专注于软件测试领域的技术讨论和研究、关注IT互联网、wordpress技巧的个人博客”
解析HTML内容
如果要得到HTML的内容就更简单了
fmt.Println(p.Html())//.Html()得到html内容
class := p.Find("h2").Text()
fmt.Println(class,"\n")
@H_
301_2@我们可以使用Find()来查找需呀哦的
标签;并且用.Text()来
显示标签的
内容
如果要解析class的内容;需要在Find(".")加一个.
@H_
301_2@下面我们要
提取class”entry-title”里面、后面的”href”的
URL地址
@H_
301_2@由于超过1条
内容所以不能用Text()来打印结果;需要用for来循环一下;
t := p.Find(".entry-title a")
for i := 0; i < t.Length(); i++ {
d := t.Eq(i).Attr("href")
fmt.Println(d)
}
@H_
301_2@
输出结果如下
http://www.hiadmin.org/code/ebookdownloadtools
http://www.hiadmin.org/code/ipconversiontools
http://www.hiadmin.org/code/go-mac-address
http://www.hiadmin.org/linux/centos7-tomcat-start
@H_
301_2@其实就是
首页里面的4篇
文章的地址
如果想得到html里面所有的herf
fmt.Println(p.Find("").Attrs("href"))
@H_
301_2@用上面一行
代码就可以得到HTML里面全部的href
内容了
判断元素是否存在
如果想要判断一个元素是否在HTML里面;可以使用下面的代码
fmt.Println(p.Find("div").HasClass("entry-content"))
@H_
301_2@判断div下面有没有“entry-content”的class元素;有返还true;没有返回false
@H_
301_2@PS:暂时就上面这些常用的了、详细
内容可以去github上查看
原文链接:https://www.f2er.com/go/190702.html