- 开发无止境 -
Data: 2020-10-06 17:40:32Form: JournalClick: 15
doc.OnHTML("#content", func(e *colly.HTMLElement) { println(`输出序号跟标签名`, e.Index, e.Name) //提取匹配到的元素自身的文本内容 text := e.Text println(text) //提取指定子元素的文本内容。 ChildText := e.ChildText("span#mine-selector") println(ChildText) //获取元素的属性值。通常用于提取链接、图片等元素的属性值。 Attr := e.Attr("id") println(Attr) // 用于获取匹配到元素的特定子元素的单个属性值。 // 获取第一个匹配的<span>标签的data-id属性值 ChildAttr := e.ChildAttr("span.child", "data-id") fmt.Println("Child attribute:", ChildAttr) // 获取匹配到元素的子元素的属性值,返回一个属性值的切片。 // 例如获取所有<li>标签的data-id属性值 ChildAttrs := e.ChildAttrs("li", "data-id") for _, item := range ChildAttrs { fmt.Println("List item ID:", item) } // 返回匹配到的元素的DOM节点,可以用于进一步的查询或操作。 dom := e.DOM // 获取<div class="content">的DOM节点 // 进行更多的DOM操作或查询 })
doc.OnHTML("body", func(e *colly.HTMLElement) { // 匹配和处理第一个内容 e.ForEach("#selector-for-content-1", func(_ int, el *colly.HTMLElement) { // 处理第一个内容的逻辑 }) // 匹配和处理第二个内容 e.ForEach("#selector-for-content-2", func(_ int, el *colly.HTMLElement) { // 处理第二个内容的逻辑 }) // ... 匹配和处理其他内容 })
// 定义选择器机构体 type MovieDate struct { // 名称首字母必须大写 Title string `selector:".hd span.title"` }
//根据结构体规定的选择器来输出内容 doc.OnHTML("#content .grid_view li", func(s *colly.HTMLElement) { Movie := MovieDate{} if err := s.Unmarshal(&Movie); err != nil { log.Panicln("Failed to unmarshal:", err) return } fmt.Println("Title:", Movie.Title) })