1.为什么要学习goquery?
咱们先来看下goquery选择器在colly中是如何被使用的
从html页面中匹配元素的方式:正则表达式,xpath,goquery
正则表达式的可读性和可维护性不够好
xpath我暂时没有接触
类似jQuery 的东西,是go语言版本的,我们不是做web开发,我们学习goquery是为了更好的为学习colly进行服务的。
1.Document元素
Document代表的是一个html页面
五种初始化方法中,有三种是最常用的。
colly中是将html解析成DOM格式的数据,然后进行查询和过滤的
2.Selection元素
- Eq(index int) *Selection //根据索引获取某个节点集
- First() *Selection //获取第一个子节点集
- Last() *Selection //获取最后一个子节点集
- Next() *Selection //获取下一个兄弟节点集
- NextAll() *Selection //获取后面所有兄弟节点集
- Prev() *Selection //前一个兄弟节点集
- Get(index int) *html.Node //根据索引获取一个节点
- Index() int //返回选择对象中第一个元素的位置
- Slice(start, end int) *Selection //根据起始位置获取子节点集
3.过滤方法
a
a
a
Filter() //过滤
Has() //是否包含
contain() /是否包含
4)循环遍历选择的节点
- Each(f func(int, *Selection)) *Selection //遍历
- EachWithBreak(f func(int, *Selection) bool) *Selection //可中断遍历
- Map(f func(int, *Selection) string) (result []string) //返回字符串数组
5)常用goquery选择器表达式
Find(element)
Find(element#id)
Find(.classname) #class选择器
Find(.classname) #特定element中,特定class选择器
通过div[class]这个选择器,筛选出Element为div并且有class这个属性的元素
Find("div[class=name]")
6 )选择器的或运算
可以采用多个选择器进行组合使用,并且以逗号(,)分割,Find("selector1, selector2, selectorN")表示,只要满足其中一个选择器就可以被筛选出来,也就是选择器的或(|)运算操作。
https://www.flysnow.org/2018/01/20/golang-goquery-examples-selector.html
https://blog.csdn.net/u010412301/article/details/79374640
https://jonathanmh.com/web-scraping-golang-goquery/