前提・実現したいこと
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を使用
あなたの回答
tips
プレビュー