页面解析需要用到goquery但是资料比较少,我从网上搜到一些,然后再写一些自己的总结,以供大家参考(持续更新)
转载请注明出处:http://www.cnblogs.com/SSSR/p/6346496.html
博客:
http://ju.outofmemory.cn/entry/131743 例子比较多
http://www.threeperson.com/users/1/articles/2051
https://www.progville.com/go/goquery-jquery-html-golang/
http://blog.csdn.net/liangguangchuan/article/details/53928570
http://www.golangtc.com/t/55a5fa5ab09ecc22f60000dc
http://www.tuicool.com/articles/ENJviyA
godoc:https://godoc.org/github.com/PuerkitoBio/goquery
函数基础:
NewDocument 创建对应 传递要抓取的url即可
goquery.NewDocumentFromNode 通过goquery的节点创建
Find 查找获取当前匹配的每个元素的后代
Eq 选择第几个
Attr 获取对应的标签属性
AttrOr 获取对应的标签属性。这个可以设置第二个参数。获取的默认值 如果获取不到默认调用对应默认值
Each 遍历每一个元素
Text 获取当前对应的文本
Html 获取当前对象的标签
AddClass 添加 class 不过用来抓取有点鸡肋不知道为何要写这个
Children 返回所有子元素
Filter 过滤标签元素
Prev 获取上一个元素
Next 获取下一个元素
Get(i int)获取第几个节点
最常用的是Find函数:参考jQuery方法:http://www.runoob.com/jquery/jquery-ref-selectors.html
其参数可以为好多内容,".article"则表示标签的class,"#article"则表示标签的ID。
"h3"则表示是查找标签是h3的,"h3 a"则表示查找到<a>标签。
dhead.Find("meta[name=description]") 表示查找meta标签,并且name="description"
text := doc.Find("div.profile-navbar").Find("span.num").Eq(1).Text()//div是标签名.profile-navbar是class的值,也可以是div#id;items := doc.Find("div#zh-list-answer-wrap").Find("h2.zm-item-title")
query.Find("#plist .list-h:nth-child(1) > li")//#plist 表示ID=plist,.list-h表示class=list-h,nth-child(1)表示属于其父元素的第二个子元素的所有元素(有待测试),>li表示直接子元素中的所有li,
.Html()表示的是当前标签内部的html代码,而不包括当前标签自己,意思是内部的HTML,例如当前查到找一个标签a,如果想通过.Html()查看一下他是否有href是看不到的,要查看他的父级标签(Parent)的Html才能看到
.Text()是这个节点下所有的节点的文本,那么如果只想看本节点的文本,不看它的子节点的文本呢?????
dcharset.Eq(1).Attr("content") 表示dcharset是一个标签集合,找第2个(索引从0开始)的属性值
tag.HasClass("origin_image") 有class的。