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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

selenium

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

Q&A

解決済

1回答

4528閲覧

【Python Selenium】Webページのロード状態から抜け出せない

_py

総合スコア3

スクレイピング

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

selenium

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

0グッド

0クリップ

投稿2021/08/24 02:12

編集2021/08/26 09:06

【Python Selenium】Webページ読み込みがずっとクルクルしている状態です。。

Pythonでソニーストアのスクレイピングをしています。
'#'が付いたULRはロード状態から抜け出せますが、'#'がないURLはロード状態が永遠に続きます。

該当のソースコード

Python

1import bs4 2import requests 3import textwrap 4import time 5import datetime 6import pandas as pd 7import openpyxl as px 8import os 9from selenium import webdriver 10from webdriver_manager.chrome import ChromeDriverManager 11from selenium.webdriver.chrome.options import Options 12from selenium.webdriver.support.ui import WebDriverWait 13 14driver = webdriver.Chrome(ChromeDriverManager().install()) 15#url = 'https://electronics.sony.com/audio/car-marine-audio/in-car-receivers-amps/p/dsxb700' 16url = 'https://electronics.sony.com/tv-video/tv-video-home-theater-sound-bars/soundbars/p/hts350' 17 18driver.implicitly_wait(10) 19driver.get(url) 20 21# スクレイピングコード 22 23driver.quit() 24

試したこと

driver.set_page_load_timeout(15)やdriver.refresh()を追加しても状況は改善されませんでした。
サイトの重さとかが関係しているのでしょうか?

お詳しい方がいましたら、アドバイスをよろしくお願いします。

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

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

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

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

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

taC-h

2021/08/30 12:57

driver.set_page_load_timeout(15)をdriver.get(url)の後で呼び出していませんか? get前にset_page_load_timeoutした場合,こちらの環境ではtimeoutしました
_py

2021/08/31 08:54

コメントありがとうございます。 driver.get(url)の前にdriver.set_page_load_timeout(15)を呼び出して、timeoutする事は確認しています。 timeoutした場合は、その後の処理が進まず、そこで処理終了ですよね? 途中でロードを中断して、後の処理を実行させたいのですが、何か方法はありますでしょうか? 以上、よろしくお願いします。
guest

回答1

0

ベストアンサー

タイムアウト設定後,タイムアウトをハンドリングすれば処理を継続させられます

python

1from selenium.common.exceptions import TimeoutException 2 3... 4 5driver.set_page_load_timeout(15) 6#タイムアウトのハンドリング 7try: 8 driver.get(url) 9except TimeoutException: 10 pass 11 12# スクレイピングコード 13

参考
Python公式チュートリアル:例外を処理する
selenium APIドキュメント非公式日本語訳

投稿2021/08/31 12:07

taC-h

総合スコア289

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

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

_py

2021/09/01 00:57

pass追加したら、思うような動作ができました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問