質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

0回答

373閲覧

google colab selenium webページ pdf化

tttkkk

総合スコア38

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2022/09/14 09:23

編集2022/09/14 13:29

colabの環境下でseleniumを用いて、印刷レイアウトからwebページをpdf保存した場合、どのようにすればpdfファイルを取得できますでしょうか。

下記のサイトを参考にseleniumで印刷レイアウトを表示させ、webページをpdf保存するコードを書きました。
https://degitalization.hatenablog.jp/entry/2021/03/13/102805
しかしcolabですと、pdfファイルが見つからず、どこに保存されているのか、そもそも保存すらされているのかがわからない状態です。

一応ですが環境は
google colab
Python 3.7.13
windows10(ローカル)
でございます。

以下に私が書きましたサンプルコードを記載いたします。

python

1! pip install selenium 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options 4from selenium.webdriver.support.ui import WebDriverWait 5from selenium.webdriver.support import expected_conditions as EC 6 7!apt-get update 8!apt install chromium-chromedriver 9!cp /usr/lib/chromium-browser/chromedriver /usr/bin 10options = webdriver.ChromeOptions() 11options.add_argument('--headless') 12options.add_argument('--no-sandbox') 13options.add_argument('--disable-dev-shm-usage') 14browser = webdriver.Chrome('chromedriver', options = options) 15browser.implicitly_wait(3) 16 17import json 18import time 19 20chromeOpt = webdriver.ChromeOptions() 21appState = { 22 'recentDestinations': [ 23 { 24 'id': 'Save as PDF', 25 'origin': 'local', 26 'acount':'' 27 } 28 ], 29 'selectedDestinationId': 'Save as PDF', 30 'version': 2, 31 'isLandScapeEnabled': True, 32 'pageSize': 'A4', 33 'isHeaderFooterEnabled': False, 34 'isCssBackgroundEnabled': True 35} 36 37prefs = { 38 'printing.print_preview_sticky_setting.appState': json.dumps(appState), 39 'download.default_directory': '/content' 40} 41 42chromeOpt.add_experimental_option('prefs', prefs) 43chromeOpt.add_argument('--kiosk-printing') 44 45URL = 'https://tabelog.com/tokyo/' 46browser = webdriver.Chrome('chromedriver', options = options) 47browser.implicitly_wait(10) 48browser.get(URL) 49WebDriverWait(browser, 15).until(EC.presence_of_all_elements_located) 50pdf = browser.execute_script('return window.print()') 51time.sleep(10) 52browser.quit()

色々とpdf保存できなかった理由を調べてみますと
ヘッドレスモードで下記の処理であるseleniumnで印刷ダイアログを閉じるという処理ができないようです。

python

1chromeOpt.add_argument('--kiosk-printing')

またそれならと、ヘッドレスモードにしないでchromeを使用しようとしましたが、colabではヘッドレスモード以外は使用できないそうです。
つまりseleniumで印刷ダイアログからpdf保存するにはヘッドレスモードを解除しなくてはいけないが、colabでchromeを扱う以上、ヘッドレスモードは解除できず、結果としてpdf保存ができないということになってしまいました。

さらにサンプルコードの中であいまいにコードを書いた部分が以下の保存先の部分です。
colabの場合どのように保存先を示していいか分からず、とりあえずという感じで書いてしまいました。

python

1'download.default_directory': '/content'

ローカル環境でしたらダウンロードフォルダなど任意の場所を示すと思うのですが、
colabにおいて、基本的に取得したファイルが保存されるcontentを指定してみました。

長文になってしまい、分かりづらい点も多々あったかとは思うのですが、
教えて頂けますと幸いです。

追記 2022/09/14 22:30
colabを使用したい理由として、単純なことなのですが基本的に私のpythonの環境がcolabだからです。
jupyter labなどももちろん使えるようにはしておりますが、クラウドの便利さからcolabを選択しております。
ですので、多少コードを工夫してでもcolabで統一してできないかというのを模索しております。
colabではどうしても手段がないのであれば、jupyter labなどのローカル環境で試していこうと思っております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/09/14 13:15

> つまりseleniumで印刷ダイアログからpdf保存するにはヘッドレスモードを解除しなくてはいけないが、colabでchromeを扱う以上、ヘッドレスモードは解除できず、結果としてpdf保存ができないということになってしまいました。 GoogleColaboratoryを使用しなければならない理由があるのでしょうか?
tttkkk

2022/09/14 13:30

説明不足で申し訳ございません。 colabを使用したい理由として、単純なことなのですが基本的に私のpythonの環境がcolabだからです。 jupyter labなどももちろん使えるようにはしておりますが、クラウドの便利さからcolabを選択しております。 ですので、多少コードを工夫してでもcolabで統一してできないかというのを模索しております。 colabではどうしても手段がないのであれば、jupyter labなどのローカル環境で試していこうと思っております。 同様の内容を投稿文にも追記させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問