我有一个如下的结构:
Type Post struct{
ID int64
Title string
Content string
}
我卷曲了一个网页,用Go Colly接收数据,我有两个OnHtml方法,如下:
func main() {
c := colly.NewCollector()
c.OnHTML("p", func(e *colly.HTMLElement) {
Post := Post{
Content: e.Text
}
db.Create(&Post)
})
c.OnHTML("h", func(e *colly.HTMLElement) {
Post := Post{
Title: e.Text
}
db.Create(&Post)
})
c.Visit("http://go-colly.org/")
}
上面代码运行良好,但这会在数据库中创建两行,如下所示:
+--------------+---------------+---------------+
| id | title | content |
+--------------+---------------+---------------+
| 1 | Hello | Null |
+--------------+---------------+---------------+
| 2 | Null | Mycontent ... |
+--------------+---------------+---------------+
我想创建它:
+--------------+---------------+---------------+
| id | title | content |
+--------------+---------------+---------------+
| 1 | Hello | Mycontent ... |
+--------------+---------------+---------------+
如何在go colly中获取两个元素并在一行中保存?
发布于 2020-03-09 19:11:52
您应该阅读此示例:在包含detailCollector.OnHTML("div[id=rendered-content]", func(e *colly.HTMLElement) {
的行处执行http://go-colly.org/docs/examples/coursera_courses/
该示例在封装了整个内容的元素(这里是onHTML )上设置了div,因此对于您来说,您需要找到封装包含标题+内容的每篇文章的元素,然后执行一个e.ForEach来解析每篇文章。
编辑:对于您的用例,http://go-colly.org/docs/examples/factbase/也是一个很好的例子。获取正文,然后用说话者和文本分析每个主题。
清楚了吗?
https://stackoverflow.com/questions/60596820
复制相似问题