Go言語でヘッドレスChromeを利用できるライブラリであるchromedpにて、検索した要素のHTMLを取得するサンプルが全く見つからなかったのでメモ。
まずはクエリセレクタで要素リストを取得する。
err := c.Run(ctxt, chromedp.Tasks{
chromedp.Nodes(".some-class a", &nodes, chromedp.ByQueryAll),
})
このnodesの下にある要素のHTMLを取得したかったのだが、cdp.Node
にはinnerHTML的なプロパティもメソッドもない。よくわからないがいろいろ調べたところ下記のような方法で取れた。
var result string
err := c.Run(ctxt, chromedp.Tasks{
chromedp.ActionFunc(func(ctxt context.Context, h cdp.Executor) error {
html, err := dom.GetOuterHTML().WithNodeID(node.NodeID).Do(ctxt, h)
if err == nil {
result = html
}
return err
}),
})
十分なリファレンスがほしい…。やっぱりquerySelector等がそのまま使えるNode.jsでのpuppeteer利用が最強っぽい気がする。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント