selenium webdriverでページをPDFとして保存するか、リソースを含んだHTMLを保存したかったので色々調べてみましたが、どうも難しそうです。
まず、seleniumのフォーラムに質問しました。ページをPDFファイルで保存したいんだけどできない?って。
How to print current opened page as PDF file? – Google Groups
まぁ他のサイト調べてみてて、いやそれはseleniumできないから。何度も言ってるよね?みたいに怒られるかなぁと思ってたけどそもそも回答すら来なかったという。
まぁ、フォーラムの動きみても、1日に一度投稿されるかどうかっていうレベルの規模みたいだから…ちょっときつい。
Do you want to save HTML pages without any CSS, JS, images etc. ? If Yes
the WebDriver object offers a method getPageSource() which saves the raw
HTML page.
[selenium-users] How to save a html file – Grokbase
HTMLの保存だけだったらpage_sourceメソッドでできるよ、といっていますね。それは知ってます。
ちょっと話飛びますが、実はこのHTMLの保存も完全ではないんですよね。さっき試しましたけど、保存したHTMLをPDFに変換しようとしたんですよ。
そしたらエラー出て。ライブラリの問題かなと思ったけどどうも違う。2つ使ってエラーってのはないだろう。ってことでエラー出た部分の行と、実際にブラウジングした場合に表示されるソースコードを見比べてみると、やはり違うんですよね。でそれが原因だろう、と。
もう万策尽きますよ。
Use getHtmlSource and parse the resulting HTML for references to external files, which you can then download and store outside of Selenium.
Saving full page content using Selenium – Stack Overflow
getHtmlSourceっていうツールがあるみたいです。が、それの情報が少なすぎて諦めました。
これは情報が古すぎるのとJavaなので見ても分からない。
Yeah, don’t use Selenium for this.
http://www.gnu.org/software/wget/
How to save a HTML page including all its resources (css, js, images…)? – Google Groups
seleniumでやらないでwgetでやろうねって言ってますが、ここの質問者さんも言ってますが、JavaScript使いたいんだよ!ってことですね。だからwgetじゃだめなんだって。
一時的にログイン出来ても、そのあと更にキーワード入力とかあったらwgetじゃできないだろうし、出来てもwgetのほうが大変になりそう。ってか普通にwgetじゃJavaScript使えませんよね??
最後にここ紹介。
一番期待してたんだけど無理だった。
Seleniumで印刷(print preview)を経てPDFを保存する方法 – それマグで!
window.print で表示された、印刷ダイアログで、ボタンを押すことは kioskオプションがやってるくれるのでSelenium側では処理をする必要がありません。
kioskオプションがやってるくれるので
kioskオプションはやってくれませんでした………(落胆)
ということで、無理でした。半日かけて調べましたが…。