【Go】 goqueryのNewDocument() が非推奨となり、かわりのNewDocumentFromReader()の使い方を調べた
•
3 min read
goquery.NewDocument("url")
が非推奨となったみたいだったので、調べてみました。
goquery.NewDocument is deprecated: Use the net/http standard library package to make the request and validate the response before calling goquery.NewDocumentFromReader with the response's body.deprecated(default)
func goquery.NewDocument(url string) (*goquery.Document, error)
NewDocument is a Document constructor that takes a string URL as argument. It loads the specified document, parses it, and stores the root Document node, ready to be manipulated.
Deprecated: Use the net/http standard library package to make the request and validate the response before calling goquery.NewDocumentFromReader with the response's body.
これまでは、以下のようにすることで対象のURLからGetでドキュメントを取得してくれましたが、これが非推奨となったため、上のあるように net/http でリクエストを行い goquery.NewDocumentFromReader(body)
とする必要があるようです。
func findBooks(url string) ([]Book, error) {
doc, err := goquery.NewDocument(url)
if err != nil {
return nil, err
}
//...
}
goquery.NewDocumentFromReader()
に変換
func findBooks(url string) ([]Book, error) {
res, err := http.Get(url)
if err != nil {
return nil, err
}
defer res.Body.Close()
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
return nil, err
}
}
上記のようにリファクタリングすることで、非推奨のアラートは消えました。
参考
https://pkg.go.dev/github.com/PuerkitoBio/goquery#NewDocument
https://github.com/PuerkitoBio/goquery#examples