使用 jsoup 抓取站点并在 golang 中创建 json

crawl a site with jsoup and make json in golang

我想抓取网站 (bbs.archusers.ir) 以便为用户制作新的 post 或主题通知。

我尝试在下面编写阅读名称、上次更改日期和 URL 每个部分的代码,并将其保存到结构中,并将结构保存到 JSON 对象中。但是我的结构中的 link 部分不会获得任何值,并且会出现在我的控制台中,这是我的代码

    package main

import (
    "fmt"
    "github.com/anaskhan96/soup"
    "log"
    "os"
    "encoding/json"
)

type Message struct {
    Name string
    Date string
    link string

}

type myJSON struct {
    Array []Message
}

var input []Message

func main() {

    resp, err := soup.Get("https://bbs.archusers.ir")

    if err != nil {
        os.Exit(1)
    }

    doc := soup.HTMLParse(resp)
    links := doc.Find("div", "id", "brdmain").FindAll("a")
    for i := 0; i < len(links); i += 2 {
        link := Message{links[i].Text(), links[i+1].Text(), links[i].Attrs()["href"] }
        input = append(input, link)
    }


    if err != nil {
        log.Fatal(err)
    }

    jsondat := &myJSON{input}
    encjson, _ := json.Marshal(jsondat)
    fmt.Println(string(encjson))

}

我哪一部分做错了?

你的消息结构有问题 它必须用大写字母 k 命名 'link' ---< Link

type Message struct {
Name string
Date string
Link string
}

并且输出将是正确的

{"Name":"مانجارو Manjaro","Date":"2018-10-18 10:55:09","Link":"viewforum.php?id=22"}