【GO】goqueryでscriptの変数を取得する


goqueryでHTMLを読み込んでも中身が空の時があります。

agoutiなど使って表示を待ってからとる方法もありますが、メモリなどの関係でブラウザを起動させたくない時にscriptを読み込んで変数を取得することもできます。

APIが用意されておらずwebsocketのみで値更新されていない場合向け。

 

まずはテスト用のHTMLに以下のようなものを用意しました。

 

WebでなくFileなのでちょっと読み込み方を変えますが、こんな感じで始めます。

 

とりあえずscriptのsrc一覧を見てみます。

ここに目当てのものがある場合には、そちらのURLを読み込みます。

 

べた書きされているものはText()で取得できます。

scriptべた書き部分はhead内とbody内の2つありますが全部取得できます。

 

ここから正規表現を使って値を取り出します。

複数行マッチになるので前回やったようにsフラグを立てています。

 

要素名やスペース数などで面倒な時は、

exp = regexp.MustCompile(\{.*:(.*),.*:"(.*)",.*:(.*)\})

のように;,で囲まれる部分をグルーピングする方法もあります。

 

手間的にはagoutiでヘッドレスブラウザ使って取得する方が早そう。

別アプリの用意が必要ない分できるだけgoqueryで解決しておきたいけど、できることに限度もあるから使い分けを考えないと。


コメントを残す

メールアドレスが公開されることはありません。