logo资料库

golang解析html.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
如何解析Html代码代码 Golang如何解析 用Golang的朋友都知道如果我们要从HTML中提取一些内容、比如title或者是h2在或者是一些其他的HTML的内容、在Golang里面我们如果要自己写代 码来提取还是相当的麻烦的; 由于我之前在写Pyhon的爬虫的时候也需要解析HTML标签;所以用过PyQuery和BS4.这次在用Golang写爬虫的时候就留意了一下是否有Golang版本 的Query。github是个好地方;上面很找到很多开源的代码可以用;包括GoQuery。 所以这次会介绍一下如何用GoQuery来解析HTML元素。 导入导入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) } 命令行下运行go run page.go之后得到输出 “Smart Testing | 专注于软件测试领域的技术讨论和研究、关注IT互联网、WordPress技巧的个人博客” 解析解析HTML内容内容 如果要得到HTML的内容就更简单了 fmt.Println(p.Html())//.Html()得到html内容 获取获取h2/h1之类的标签内容 之类的标签内容 class := p.Find("h2").Text() fmt.Println(class, "\n") 我们可以使用Find()来查找需呀哦的标签;并且用.Text()来显示标签的内容 解析提取class的内容的内容 解析提取 如果要解析class的内容;需要在Find(".")加一个. 下面我们要提取class"entry-title"里面、后面的"href"的URL地址
由于超过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) } 输出结果如下 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 其实就是首页里面的4篇文章的地址 如果想得到html里面所有的 如果想得到 里面所有的herf fmt.Println(p.Find("").Attrs("href")) 用上面一行代码就可以得到HTML里面全部的href内容了 判断元素是否存在 判断元素是否存在 如果想要判断一个元素是否在HTML里面;可以使用下面的代码 fmt.Println(p.Find("div").HasClass("entry-content")) 判断div下面有没有“entry-content”的class元素;有返还true;没有返回false PS:暂时就上面这些常用的了、详细内容可以去github上查看
分享到:
收藏