BattleProgrammerShibata

ある日は誰かと戦い、ある日は何かと戦い、そしてある日は自分と戦うのだろう、そういう生き物。

goquery に http.PostForm の結果を食わせるだけの話

メモ。

f:id:bps_tomoya:20170502213944j:plain

github.com

Go で html に対してスクレイピングを行うには jQuery ライクに探索できる goquery が便利だと伺ったので使ってみることに。 標準ライブラリの http.GET() に相当するものはgoquery.NewDocument() だけれど、今回使いたかった http.PostForm に当たる API が見当たらなかったので調べてみた。

なんのことはなく、http.PostForm() で得た結果を goquery.NewDocumentFromResponse() に渡すだけだった。

// 普通に PostForm して
resp, err := http.PostForm(
    "http://example.com/",
    url.Values{"key": {"value"}})

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

defer resp.Body.Close()

// NewDocumentFromRespones に食わせるだけ
doc, err := goquery.NewDocumentFromResponse(resp)

// 取得した doc を使ってすきな処理をする

メモおわり。

参考

github.com