我需要从站点列表中抓取不同的标签,放入变量,然后把它们放在一个.csv列表中.例如,提到文章作者的所有行(div.Author、p.Author等).在所有站点上,此行和标记的位置都不同,因此我需要创建一个条件正则表达式来过滤这些标记.

这是我的代码,我在其中找到1个可能的作者标签并将其附加到articleCollection.我try 了if和for条件,但不能将其正确地变量化为author_name变量.

c.OnHTML("body", func(e *colly.HTMLElement) {
    author_name := e.DOM.Find("div.author").Text()

    if author_name == "" {
        log.Println("Author not found \n")
    }

    author := Authors{
        Author: author_name,
    }

    articleCollection = append(articleCollection, author)
})

此外,我还try 为Find All实现这样的条件

使用Author类,但它不起作用,因为author_name declared and not used:

if author_name == "" {
    author_name := e.DOM.Find("p.author").Text()
}

谢谢.

推荐答案

使用

if author_name == "" {
    author_name = e.DOM.Find("p.author").Text()
}

而不是

if author_name == "" {
    author_name := e.DOM.Find("p.author").Text()
}

使用:=将分配一个新变量,在您的例子中,它是author_name,一个仅在if块内有效的新变量.在声明变量之后,您没有在任何事情上使用它,这就是出现错误的原因

Go相关问答推荐

无法在Macos上使用Azure Speech golang SDK

Gorm foreign 密钥

调用API时使用nginx作为反向代理时从nginx获取502坏网关

Kafka消费者在需要时不会暂停

如何存储来自异步Goroutine的返回值列表?

Golang测试容器,无法使网络正常工作

如何在Golang中使用ECHO服务器实现Socket.IO服务器

在Go中旋转矩阵

Redis:尽管数据存在,但 rdb.Pipelined 中出现redis:nil错误

同一文件上的多个 Arrow CSV 阅读器返回 null

golang yaml 马歇尔网址

我如何解码 aes-256-cfb

使用反射在 struct 内迭代切片 struct

如何在 GORM 中迭代一个 int 数组

gorm 获取列名

使用正则表达式拆分具有相同标题的数据块

在 golang 中联合一个接口和类型

关于GO的几个问题

将函数的值作为输入参数返回给另一个

如何访问 Go 模板中数组的第一个索引的值