使用Go语言官方html库解析HTML,提取img标签src链接

在网页数据处理中,我们经常需要从HTML文档中提取特定的内容。本文将介绍如何使用Go语言官方html库解析HTML,并以提取img标签的src属性值为例进行演示。

代码示例:

package main

import (
    'fmt'
    'strings'
    'golang.org/x/net/html'
)

func main() {
    htmlStr := '<html><body><div><div><div><main><div><div><article><div><div><div><table><tbody><tr><td><span><a><img alt='雪狐桑看板.png' class='infobox-image lazyload' data-lazy-src='https://img.moegirl.org.cn/common/thumb/5/5d/%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png/280px-%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png' data-lazy-srcset='https://img.moegirl.org.cn/common/thumb/5/5d/%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png/420px-%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png 1.5x, https://img.moegirl.org.cn/common/thumb/5/5d/%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png/560px-%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png 2x' data-lazy-state='done' style='' src='https://img.moegirl.org.cn/common/thumb/5/5d/%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png/280px-%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png' srcset='https://img.moegirl.org.cn/common/thumb/5/5d/%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png/420px-%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png 1.5x, https://img.moegirl.org.cn/common/thumb/5/5d/%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png/560px-%E9%9B%AA%E7%8B%90%E6%A1%91%E7%9C%8B%E6%9D%BF.png 2x' width='280' height='389'></a></span></td></tr></tbody></table></div></div></div></article></div></div></main></div></div></div></body></html>'

    reader := strings.NewReader(htmlStr)
    doc, err := html.Parse(reader)
    if err != nil {
        panic(err)
    }

    var traverse func(*html.Node)
    traverse = func(n *html.Node) {
        if n.Type == html.ElementNode && n.Data == 'img' {
            for _, attr := range n.Attr {
                if attr.Key == 'src' {
                    fmt.Println(attr.Val)
                }
            }
        }
        for c := n.FirstChild; c != nil; c = c.NextSibling {
            traverse(c)
        }
    }

    traverse(doc)
}

代码解析:

  1. 我们首先使用strings.NewReader()将HTML字符串转换为io.Reader类型。
  2. 接着使用html.Parse()函数解析HTML文档,得到一个*html.Node类型的根节点。
  3. 定义一个递归函数traverse(),用于遍历HTML树结构。
  4. traverse()函数中,我们判断当前节点是否为img元素,如果是,则遍历其属性列表,找到src属性并打印其值。
  5. 最后,调用traverse()函数开始遍历HTML文档树。

总结:

本文介绍了如何使用Go语言官方html库解析HTML文档,并以提取img标签的src属性值为例进行了演示。通过学习本文,您可以了解到如何使用Go语言处理HTML结构化数据,并应用到实际项目中。

Go语言解析HTML:提取img标签src链接

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

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