Go语言解析HTML:提取img标签src链接
使用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)
}
代码解析:
- 我们首先使用
strings.NewReader()将HTML字符串转换为io.Reader类型。 - 接着使用
html.Parse()函数解析HTML文档,得到一个*html.Node类型的根节点。 - 定义一个递归函数
traverse(),用于遍历HTML树结构。 - 在
traverse()函数中,我们判断当前节点是否为img元素,如果是,则遍历其属性列表,找到src属性并打印其值。 - 最后,调用
traverse()函数开始遍历HTML文档树。
总结:
本文介绍了如何使用Go语言官方html库解析HTML文档,并以提取img标签的src属性值为例进行了演示。通过学习本文,您可以了解到如何使用Go语言处理HTML结构化数据,并应用到实际项目中。
原文地址: https://www.cveoy.top/t/topic/jx0T 著作权归作者所有。请勿转载和采集!