首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用go colly在一个页面上获得多个元素

如何使用go colly在一个页面上获得多个元素
EN

Stack Overflow用户
提问于 2020-03-09 16:20:40
回答 1查看 1.6K关注 0票数 0

我有一个如下的结构:

代码语言:javascript
运行
复制
Type Post struct{
     ID int64
     Title string
     Content string
}

我卷曲了一个网页,用Go Colly接收数据,我有两个OnHtml方法,如下:

代码语言:javascript
运行
复制
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/")
}

上面代码运行良好,但这会在数据库中创建两行,如下所示:

代码语言:javascript
运行
复制
+--------------+---------------+---------------+
|      id      |     title     |    content    |
+--------------+---------------+---------------+
|       1      |      Hello    |      Null     |
+--------------+---------------+---------------+
|       2      |      Null     | Mycontent ... |
+--------------+---------------+---------------+

我想创建它:

代码语言:javascript
运行
复制
+--------------+---------------+---------------+
|      id      |     title     |    content    |
+--------------+---------------+---------------+
|       1      |      Hello    | Mycontent ... |
+--------------+---------------+---------------+

如何在go colly中获取两个元素并在一行中保存?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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/也是一个很好的例子。获取正文,然后用说话者和文本分析每个主题。

清楚了吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60596820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档