Javascript による表示をHTMLとして取得するにはどうしたらいいでしょうか?
Q&A
Closed
輸入動向を調べる(モニタリングシステム) のようなJavascript で表示していると思われるページは、HTMLの保存を行っても、表示されているテキストを取得できません。取得したいのは画像で、HS9用というところです。HS9 コードが全部表示されているかをチェックしたいのです。
この部分のデータを取得するにはどうしたらいいのでしょうか?
Q&A
Closed
輸入動向を調べる(モニタリングシステム) のようなJavascript で表示していると思われるページは、HTMLの保存を行っても、表示されているテキストを取得できません。取得したいのは画像で、HS9用というところです。HS9 コードが全部表示されているかをチェックしたいのです。
この部分のデータを取得するにはどうしたらいいのでしょうか?
ページ内のjavascriptで作っているならinnerHTMLで取得できるでしょうけど、ちょうどこの画像の部分はインラインフレームになっていてtableau.com
側が処理しているため中身を見るのは無理っぽいですね。
@zanjibar
Questioner
インラインフレームになっていている、という事情は @albireo さんの回答の通りです。
以下、補足です。
現在、Selenium のバックエンド は WebDriver です。 WebDriver には フレームを扱う API があります。
この質問の例ですと、iframe には、
https://public.tableau.com/views/202006_bouekitoukei/sheet0?:embed=y&:showVizHome=no&:host_url=https%3A%2F%2Fpublic.tableau.com%2F&:embed_code_version=3&:tabs=yes&:toolbar=yes&:animate_transition=yes&:display_static_image=no&:display_spinner=no&:display_overlay=yes&:display_count=yes&:language=ja&:loadOrderID=0
というページが埋め込まれています。こういったページに直接アクセスしても構わない場合もあります。
データをデータとしてダウンロードしてから扱う方が簡単なことも多いです。この例ですと tableau がデータのダウンロードを提供しています。
(これは質問者さんのニーズとはずれたことと思いますが、スクレイピングにこだわり過ぎて苦労している方が多いようですので一応、付記いたしました)
@zanjibar
Questioner
var FIText = document.getElementsByClassName("FIText");
for (var i=0; i<FIText.length; i++) {
console.log(FIText[i].innerText);
}
@zanjibar
Questioner