64bit Win7 LiteIDEにてGoを書いています。
スクレイピングのコードを書いていて困っています。
①goquery.NewDocumentで直接開く
doc, err := goquery.NewDocument(url)
⇒Build&Runの結果、日本語出力が文字化け
②http.NewRequestを挟んでHeaderをセットする
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143
Safari/601.1")
client := new(http.Client)
resp, _ := client.Do(req)
doc, err = goquery.NewDocumentFromResponse(resp)
⇒文字化けしないのですが、doc.Find("")CSSセレクタの挙動が変
ちなみにHeaderセットしないと文字化けします…
※HeaderもUserAgentが変わるとやっぱり文字化けします。。
LiteIDEだと駄目なのかと思ってAtomでも試したのですが、同じ結果でした。
①の方法で、Build&RunのIDEでの出力結果が日本語になってくれれば一番うれしいのですが…
ちなみに、csvファイル出力して、sakuraエディタで表示するとちゃんとutf-8で見えます。
少しでも何かご存知の方、よろしくお願いいたします!
package main import ( "fmt" "net/http" "github.com/PuerkitoBio/goquery" ) func main() { url := "https://www.google.co.jp/search?q=%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3&oq=%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3&aqs=chrome..69i57j0l5.7015j0j7&sourceid=chrome&ie=UTF-8" doc, err := goquery.NewDocument(url) if err != nil { fmt.Println(err.Error()) } // search doc.Find("a").Each(func(i int, s *goquery.Selection) { fmt.Printf(s.Text()) //日本語は文字化けします })
package main import ( "fmt" "net/http" "github.com/PuerkitoBio/goquery" ) func main() { url := "https://www.google.co.jp/search?q=%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3&oq=%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3&aqs=chrome..69i57j0l5.7015j0j7&sourceid=chrome&ie=UTF-8" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1") client := new(http.Client) resp, _ := client.Do(req) defer resp.Body.Close() doc, err = goquery.NewDocumentFromResponse(resp) if err != nil { panic(err) } selection := doc.Find("a") selection.Each(func(index int, s *goquery.Selection) { fmt.Printf("Title: %s \n", s.Text()) //結果がゼロ件になります }) //println(selection.Text()) //defer doc.Body.Close() }
回答2件
あなたの回答
tips
プレビュー