Как получить DOM HTML в Go - PullRequest
0 голосов
/ 22 апреля 2019

Я пишу парсер HTML в Go.Мне нужно получить HTML и передать его другой функции.

Я сделал это так:

  1. Не могу передать "док" другой функции
receivedURL, err := http.Get("http://lavillitacafe.com/")
doc, err := goquery.NewDocumentFromReader(receivedURL.Body)
//"linkScrape" this is another function
contactURL := linkScrape(doc)

и

HTML передается по частям в другую функцию.
resp, err := http.Get("http://lavillitacafe.com/")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    for true {

        bs := make([]byte, 1014)
        n, err := resp.Body.Read(bs)
                contactURL := linkScrape(bs[:n])
        if n == 0 || err != nil{
            break
        }
    }

Как мне это сделать правильно?

1 Ответ

0 голосов
/ 22 апреля 2019

Вот базовый goquery пример, адаптированный к вашему варианту использования:

package main

import (
    "fmt"
    "log"
    "strings"

    "github.com/PuerkitoBio/goquery"
)

func findHeader(d *goquery.Document) string {
    header := d.Find("h1").Text()
    return header
}

func main() {
    // create from a string
    data := `
<html>
    <head>
        <title>My document</title>
    </head>
    <body>
        <h1>Header</h1>
    </body>
</html>`

    doc, err := goquery.NewDocumentFromReader(strings.NewReader(data))
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(findHeader(doc))
}
...