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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

3544閲覧

pyppeteerでbrowsererror browser closed unexpectedlyというエラーが出る

hideki.

総合スコア31

Python 3.x

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

1グッド

0クリップ

投稿2022/08/19 02:52

前提

ヘッドレスブラウザのpyppeteerを使って、ブラウザ画面のスクリーンショットを保存するプログラムを書いてます。まず、Windows環境で動作するプログラムを作成、正常に動作することを確認しました。これをLinux環境へ移植するところではまっています。
具体的にはプログラムを実行後、ブラウザ起動のところで30秒程度待ちがあって、「pyppeteer.errors.BrowserError: Browser closed unexpectedly:」
ろいうエラーが出力されます。
移植プログラムの前にシンプルな検証用のコードで実行しても同様です。

発生している問題・エラーメッセージ

[gss1usr@KBPBTH02 pyppeteer]$ python3 test1.py Traceback (most recent call last): File "test1.py", line 11, in <module> asyncio.get_event_loop().run_until_complete(main()) File "/usr/lib64/python3.6/asyncio/base_events.py", line 484, in run_until_complete return future.result() File "test1.py", line 5, in main browser = await launch(headless=True) File "/usr/local/lib/python3.6/site-packages/pyppeteer/launcher.py", line 307, in launch return await Launcher(options, **kwargs).launch() File "/usr/local/lib/python3.6/site-packages/pyppeteer/launcher.py", line 168, in launch self.browserWSEndpoint = get_ws_endpoint(self.url) File "/usr/local/lib/python3.6/site-packages/pyppeteer/launcher.py", line 227, in get_ws_endpoint raise BrowserError('Browser closed unexpectedly:\n') pyppeteer.errors.BrowserError: Browser closed unexpectedly:

該当のソースコード

以下は検証用のシンプルなコードです。

python

1import asyncio 2from pyppeteer import launch 3 4async def main(): 5 browser = await launch(headless=True) 6 page = await browser.newPage() 7 # await page.goto('http://www.example.com') 8 await page.goto('http://www.google.co.jp') 9 print(await page.content(), flush=True) 10 11asyncio.get_event_loop().run_until_complete(main())

試したこと

ネットで調べて以下のことを行いました。

1.不足しているライブラリの追加インストール
最初、「cannot open shared object file」というエラーも出ていたので
https://rinoguchi.net/2020/08/pyppeteer-manual.html
を参考にして依存ライブラリのインストールを行いました。
ldd /home/gss1usr/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome | grep 'not found'
というコマンドでも、見つからないライブラリは出ないので、この問題は解消されたと思います。

2.起動オプション設定
ネットでの情報を参考にに以下のオプション(Chromeのサンドボックスを有効にしない)を追加するコードに修正して実行してみましたが、状況は変わりません。
「browser = await launch(options={'args': ['--no-sandbox']})」

3.インターネット接続確認
Linuxサーバーのネットワーク設定関係の問題も疑い、curlコマンドで
curl www.google.co.jp
とすると、応答結果が返ってきました。

これ以上、何を調べれば良いのか、分からないので、アドバイスを頂きたく。よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

OS:Red Hat Enterprise Linux8
Python:version3.6
pyppeteer:version0.2.6

hoand👍を押しています

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

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

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

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

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

guest

回答1

0

自己解決

3日間、ネット検索をしまくり、自己解決しました。
まず、検証用コードは以下です。

Python

1import asyncio 2from pyppeteer import launch 3 4async def main(): 5 browser = await launch() 6 page = await browser.newPage() 7 await page.authenticate({'username': 'xxxxx', 'password': 'yyyyy'}) 8 await page.goto('http://www.example.com') 9 # await page.goto('http://www.google.co.jp') 10 print(await page.content(), flush=True) 11 await page.screenshot({'path': 'test1.png'}) 12 13asyncio.get_event_loop().run_until_complete(main())

会社でproxy認証があるので、「await page.authenticate()」でユーザー名やパスワードを設定しています。
但し、このコードでも実行結果は「pyppeteer.errors.BrowserError: Browser closed unexpectedly:」で変わりません。そこで、ターミナルから

Bash

1$ export no_proxy=localhost,127.0.0.1

とします。
すると、無事正常終了し、スクリーンショット画像も保存されました。
参考にしたのは以下のサイトです。
https://zenn.dev/ettsu/articles/db2cb8a56f5e25
また、スクリーンショットの保存で日本語フォントが豆腐になる場合は日本語フォントをインストールします。

Bash

1# dnf install -y google-noto-cjk-fonts-common google-noto-sans-cjk-ttc-fonts google-noto-serif-cjk-ttc-fonts

以上です。

投稿2022/08/24 01:25

hideki.

総合スコア31

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問