我有一个结构如下:
Type Post struct{
ID int64
Title string
Content string
}
Run Code Online (Sandbox Code Playgroud)
我使用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/")
}
Run Code Online (Sandbox Code Playgroud)
上面的代码运行良好,但这会在数据库中创建两行,如下所示:
+--------------+---------------+---------------+
| id | title | content |
+--------------+---------------+---------------+
| 1 | Hello | Null |
+--------------+---------------+---------------+
| 2 | Null | Mycontent ... |
+--------------+---------------+---------------+
Run Code Online (Sandbox Code Playgroud)
我想创建它:
+--------------+---------------+---------------+
| id | title | content |
+--------------+---------------+---------------+
| 1 | Hello | Mycontent ... |
+--------------+---------------+---------------+
Run Code Online (Sandbox Code Playgroud)
如何在 go colly 中获取两个元素并保存在一行中?
您应该阅读此示例:http ://go-colly.org/docs/examples/coursera_courses/在有的行detailCollector.OnHTML("div[id=rendered-content]", func(e *colly.HTMLElement) {
该示例在封装整个内容的元素(此处为 div)上设置了 onHTML,因此对于您来说,您需要找到封装包含标题 + 内容的每个帖子的元素,然后执行 e.ForEach 来解析每个帖子。
编辑: http: //go-colly.org/docs/examples/factbase/也是您的用例的一个很好的例子。获取正文,然后用演讲者和文本解析每个主题。
明白了吗?
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |