gpt4 book ai didi

go - 使用 goquery 提取元描述字段

转载 作者:IT王子 更新时间:2023-10-29 01:59:26 27 4
gpt4 key购买 nike

我正在使用 goquery从网页中提取信息片段的包。请在下面查看我的代码。运行函数后的结果是:

Description field: text/html; charset=iso-8859-15
Description field: width=device-width
Description field: THIS IS THE TEXT I WANT TO EXTRACT

我快到了,但是我只想获取名称 == '描述' 的元字段。不幸的是,我不知道如何将这个额外条件添加到我的代码中。

func ExampleScrapeDescription() {
htmlCode :=
`<!doctype html>
<html lang="NL">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
<meta name="viewport" content="width=device-width">
<meta name="description" content="THIS IS THE TEXT I WANT TO EXTRACT">
<title>page title</title>
</head>
<body class="fixedHeader">
page body
</body>
</html>`

doc, err := goquery.NewDocumentFromReader(strings.NewReader((htmlCode)))
if err != nil {
log.Fatal(err)
}

doc.Find("meta").Each(func(i int, s *goquery.Selection) {
description, _ := s.Attr("content")
fmt.Printf("Description field: %s\n", description)
})
}

最佳答案

只需检查 name 属性的值是否匹配 "description":

doc.Find("meta").Each(func(i int, s *goquery.Selection) {
if name, _ := s.Attr("name"); name == "description" {
description, _ := s.Attr("content")
fmt.Printf("Description field: %s\n", description)
}
})

您可能希望以不区分大小写的方式比较 name 属性的值,为此您可以使用 strings.EqualFold() :

if name, _ := s.Attr("name"); strings.EqualFold(name, "description") {
// proceed to extract and use the content of description
}

关于go - 使用 goquery 提取元描述字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30474991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com