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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

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

Q&A

解決済

1回答

2282閲覧

requests-htmlでレンダリング箇所でエラー

azzuro

総合スコア53

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

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

0グッド

1クリップ

投稿2022/06/06 07:49

編集2022/06/07 01:35

実現したいこと

webサイトからテキスト情報を取得しようとしています。
javaを使っているサイトの場合、Beautifulsoupは使えずrequests-htmlを使えばいいことがわかりました。
解説サイトを参考に、まずはgoogle検索をしてみたらレンダリングの箇所でエラーが発生します。
これはどのサイトで実行しても同じでした。
対処の仕方がわかりません。
ご教示をお願いします。

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

Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 193, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "c:\Users\Administrator\.vscode\extensions\ms-python.python-2022.6.3\pythonFiles\lib\python\debugpy\__main__.py", line 45, in <module> cli.main() File "c:\Users\Administrator\.vscode\extensions\ms-python.python-2022.6.3\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py", line 444, in main run() File "c:\Users\Administrator\.vscode\extensions\ms-python.python-2022.6.3\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py", line 285, in run_file runpy.run_path(target_as_str, run_name=compat.force_str("__main__")) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 263, in run_path return _run_module_code(code, init_globals, run_name, File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 96, in _run_module_code _run_code(code, mod_globals, init_globals, File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "c:\Users\Administrator\Documents\xxxxxxxx\PY\test.py", line 11, in <module> r.html.render(timeout=0, sleep=10) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\requests_html.py", line 586, in render self.browser = self.session.browser # Automatically create a event loop and browser File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\requests_html.py", line 730, in browser self._browser = self.loop.run_until_complete(super().browser) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py", line 612, in run_until_complete return future.result() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\requests_html.py", line 714, in browser self._browser = await pyppeteer.launch(ignoreHTTPSErrors=not(self.verify), headless=True, args=self.__browser_args) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\pyppeteer\launcher.py", line 307, in launch return await Launcher(options, **kwargs).launch() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\pyppeteer\launcher.py", line 168, in launch self.browserWSEndpoint = get_ws_endpoint(self.url) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\pyppeteer\launcher.py", line 227, in get_ws_endpoint raise BrowserError('Browser closed unexpectedly:\n') pyppeteer.errors.BrowserError: Browser closed unexpectedly:

該当のソースコード

python

1from requests_html import HTMLSession 2 3session = HTMLSession() 4#検索に利用するサイト 5url = "https://www.google.com/" 6#検索するワード 7word = "python" 8r = session.get(url + "search?q=" + word) 9r.html.render()

試したこと

タイムアウト等のオプションを設定
r.html.render(timeout=0, sleep=10) エラー内容に変化なし

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

os: Windows
python: 3.8.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

実行してみましたがそのエラーは発生しませんでした。

※以下の部分は最後に)を追加して実行しました。

r = session.get(url + "search?q=" + word

質問のエラーが再現するコードを提示ください。
実行できないコードが掲載されているということは、実行コードとは別の可能性があります。

なお、Googleはスクレイピングを禁止しているとかteratailの別の質問で見た気がするので、そもそもできない気がします。

投稿2022/06/06 14:54

FiroProchainezo

総合スコア2401

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

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

azzuro

2022/06/07 01:37

コメントありがとうございます。 ご指摘のあった閉じカッコが抜けていた部分はコピペミスです。 コード欄を修正しました。 また、google以外のどのサイトも同様の事象になることを追記しました。
FiroProchainezo

2022/06/07 02:13

別サイトでもやってみましたが、同様にエラーは発生しませんでした。 Python3.9でも動作させてみましたが変わりませんでした。 環境が異なる気がします。 `pyppeteer.errors.BrowserError: Browser closed unexpectedly:`で検索すると、`requests_html`が動作していないのではなく、pyppetterが動作していないような記載が見当たりました。 requests_htmlは初回起動時に裏でブラウザや上記SWを勝手にダウンロードしているようで、ダウンロードがうまくいかないとよくわからないエラーが発生することがあります。 Proxy内で実行する場合、Proxyを設定する仕組みがないようなので、動作しないなどの問題があるようです。 似たような理由でpyppeteerがダウンロードできなかったとか、おかしな状態になっている可能性があります。 環境を新しく作り直してやり直してみてはいかがでしょうか。 または、マニュアルでpyppetterをダウンロードして、requests_htmlが必要としている場所に配置して試してみるというのもありかもしれません。
azzuro

2022/06/07 07:17

どうやらライブラリが不足しているようです。 下記を実行すればよいとの記事を見つけました。 ただwindows環境なので、どうインストールしたらいいかわかりません。 `sudo apt-get update sudo apt-get install -y libatk1.0-0 sudo apt-get install -y libatk-bridge2.0-0 sudo apt-get install -y libgtk-3-0` Proxy内での実行になるので、私の環境では難しいのかもしれませんね。 そうなると、seleniumを使う方がいいのでしょうか。
FiroProchainezo

2022/06/07 07:31

不足しているものをどのようにインストール(ダウンロード)すれば良いのかの記述は見当たらなかったので(Ubuntuならあるんですが、Windowsのものは見当たらない)、 そこを頑張って解決するよりもseleniumで解決できるならそちらでやってしまった方が楽かもしれません。 seleniumならProxy内でも動きましたし。
azzuro

2022/06/07 07:49

インストールが難しそうなので、今seleniumuを試し始めました。 さっそくProxyでひっかかっています。 'options.add_argument('--proxy-server=http://xxxxx.co.jp:8080') driver = webdriver.Chrome(options=options)' これでいけるかと思いきや。。。
FiroProchainezo

2022/06/07 08:00

Proxyは典型的な「おま環」っていうやつなので具体的なアドバイスができません。(というか、大抵同じ回答が付いて解決しない。) 以下のページによると、記載いただいた内容と全く違う書き方をしているものがありますので、こういうのも試してみてはいかがでしょうか。 https://www.selenium.dev/documentation/webdriver/capabilities/shared/#proxy
azzuro

2022/06/07 08:05

色々とアドバイスをありがとうございます。 ご提示いただいたサイトも参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問