Colly爬虫仅获取首个图片URL问题求助
解决Colly爬取图片仅获取第一张链接的问题
你的代码只拿到第一张图片链接,是因为e.ChildAttr("img", "src")方法只会返回第一个匹配到的img元素的src属性。要获取所有图片链接,有两种简单的解决方式:
方法一:遍历容器内的所有img元素
先定位到目标容器,再用ForEach遍历容器下的每一个img元素,逐个提取src属性:
// 定义数组存储所有图片链接 var imageURLs []string c.OnHTML("div.container-chapter-reader", func(e *colly.HTMLElement) { // 遍历容器内的所有img标签 e.ForEach("img", func(index int, img *colly.HTMLElement) { src := img.Attr("src") // 过滤空链接 if src != "" { imageURLs = append(imageURLs, src) fmt.Println(src) } }) })
方法二:直接选择容器下的所有img标签
把OnHTML的选择器改成div.container-chapter-reader img,这样Colly会对每个匹配到的img元素单独触发回调,无需手动遍历:
var imageURLs []string c.OnHTML("div.container-chapter-reader img", func(e *colly.HTMLElement) { src := e.Attr("src") if src != "" { imageURLs = append(imageURLs, src) fmt.Println(src) } })
两种方法都能完整获取到容器内的所有图片链接,第二种写法更简洁直观。
内容的提问来源于stack exchange,提问作者Himanshu Sardana
相关产品推荐
相关产品推荐

