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

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

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

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

selenium

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

Q&A

0回答

683閲覧

seleniumでページングのある一覧をスクレイピングしたいがエラー(Message: unknown error: unsupported protocol )が出てしまう

hafuuuuu

総合スコア3

Python

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

selenium

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

0グッド

0クリップ

投稿2021/11/23 04:50

前提・実現したいこと

Python初心者です。
東京のクリニックデータベースの基本情報をSeleniumを使用して取得したいいと思っています。
詳しい方いましたら、お教えいただけますと幸いです。

流れとしては下記を想定しています。

1.ページにあるクリニック一覧のURLを取得
2.ページングして1の動作を行う
3.1,2を繰り返してすべてのクリニックのURLを取得し、リストに格納
4.格納したリストにあるURLに飛び、指定した要素を取得する(今回はクリニック名だけにしています)

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

browser.get(i)の使い方が間違っているのか、下記のようなエラーがでてしまう

Message: unknown error: unsupported protocol

このあたりがエラーについて説明していると思われるが、Python初心者&英語のため理解するのが難しく。。
https://stackoverflow.com/questions/54539195/selenium-run-javascript-via-navbar-using-chromedriver?noredirect=1&lq=1

該当のソースコード

python

1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3from selenium.common.exceptions import NoSuchElementException 4import pandas as pd 5from time import sleep 6 7options = Options() 8options.add_argument('--headless') 9 10browser = webdriver.Chrome('パス',options=options) 11 12pageURL = 'https://www.himawari.metro.tokyo.jp/qq13/qqport/tomintop/search/13101/17' 13browser.get(pageURL) 14sleep(3) 15 16elem_urls=[] 17 18while True: 19 elems = browser.find_elements_by_css_selector(".search-list-hospital h3 a") 20 21 for elem in elems: 22 elem_urls.append(elem.get_attribute("href")) 23 24 # 次へをクリックしページ遷移する 25 try: 26 next_button = browser.find_element_by_link_text('次のページ') 27 next_button.click() 28 sleep(3) 29 except Exception: 30 #browser.quit() 31 break 32 33print('クリニック数:', len(elem_urls)) 34 35 36cols=['クリニック名'] 37df = pd.DataFrame(index=[], columns=cols) 38 39for i in elem_urls: 40 browser.get(i) 41 42 clinic_tit = browser.find_element_by_id("hospitalD") 43 df=df.append({'クリニック名':clinic_tit}, ignore_index=True) 44 45print(len(df))

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

Juputerlabを使用

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

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

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

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

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

1T2R3M4

2021/11/23 06:31

https://www.himawari.metro.tokyo.jp/qq13/qqport/tomintop/other/fks140.php に ○このサイトの情報について  このサイトで提供する情報の権利は東京都に帰属します。このサイトのデータ(医療機関情報、薬局情報)の無断使用・無断転用・他用途への利用を禁止します。 とあるけど情報収集する目的は何でしょうか。 質問に追記していただけませんか。
hafuuuuu

2021/11/23 07:54

ご指摘ありがとうございます。 そちらの注意書き、確認していませんでした。 スクレイピング禁止のサイトですね。。 こちらのサイトから情報収集するのは諦めます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問