Go语言爬虫实战:使用Goquery提取图片链接

本文将介绍如何使用Go语言和Goquery库爬取网站上的图片链接,以萌娘百科雪狐桑页面(https://zh.moegirl.org.cn/%E9%9B%AA%E7%8B%90%E6%A1%91)为例。

问题描述

我们需要从目标网页中提取所有<img>标签中的src内容,并考虑到可能存在多个同名标签的情况。为了区分不同的<img>标签,我们将添加一个特性值。

代码实现

package main

import (
	'fmt'
	'strings'

	'github.com/PuerkitoBio/goquery'
)

func main() {
	url := 'https://zh.moegirl.org.cn/%E9%9B%AA%E7%8B%90%E6%A1%91'
	doc, err := goquery.NewDocument(url)
	if err != nil {
		fmt.Println('Error loading URL:', err)
		return
	}

	// 定义特性值
	attrName := 'data-img-src'

	// 遍历所有<img>标签
	doc.Find('img').Each(func(i int, s *goquery.Selection) {
		// 获取特性值
		imgSrc, exists := s.Attr(attrName)
		if !exists {
			// 如果没有特性值,则获取src属性值
			imgSrc, _ = s.Attr('src')
		}
		// 输出imgSrc
		fmt.Println(strings.TrimSpace(imgSrc))
	})
}

代码解读

  1. 导入必要的库:fmt用于输出结果,strings用于字符串处理,github.com/PuerkitoBio/goquery用于HTML解析。
  2. 定义目标网页URL。
  3. 使用goquery.NewDocument函数加载网页内容。
  4. 定义特性值data-img-src用于区分不同的<img>标签。
  5. 使用doc.Find('img')选中所有<img>标签,并使用Each函数遍历。
  6. 在遍历函数中,首先尝试获取<img>标签的data-img-src属性值。
  7. 如果data-img-src属性不存在,则获取src属性值作为图片链接。
  8. 最后使用fmt.Println输出提取到的图片链接。

总结

本文介绍了如何使用Go语言和Goquery库爬取网页图片链接,并通过添加特性值的方式解决了多个同名标签的问题。你可以根据实际需求修改代码,例如添加错误处理、数据存储等功能。


原文地址: https://www.cveoy.top/t/topic/jzHW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录