python初心者です。
pythonを使用したMEOのスクレイピング(googlemapの検索順位)を作成しているのですが、
1回動かすとうまくいくのですが、2回動かすと2回目に下記のようなエラーが出てしまいます。
どのように書き換えたら解決できるでしょうか?
環境はjupyterを使用しています。
↓以下エラー文
IndexError Traceback (most recent call last)
<ipython-input-17-5e8ae10bdfeb> in <module>
18
---> 19 browser.find_elements_by_css_selector('.place-result-container-place-link')[click_point].click()
IndexError: list index out of range
以下ソースコード
python
1!pip install selenium 2!pip install beautifulsoup4 3!pip3 install openpyxl 4 5import urllib.request 6from urllib.parse import quote 7from bs4 import BeautifulSoup 8import urllib.request as req 9import time 10 11from selenium import webdriver 12import time 13import pandas as pd 14 15import openpyxl 16 17keyword ='#検索ワード' 18MEO_list = [] 19click_point = 0 20meo_rank = 0 21target_word = '#店舗名' 22 23%GoogleChromeを起動 24browser = webdriver.Chrome() 25browser.implicitly_wait(3) 26 27%アクセス 28url_login = "https://www.google.co.jp/maps/?hl=ja" 29browser.get(url_login) 30time.sleep(3) 31 32element = browser.find_element_by_name("q") 33element.clear() 34element.send_keys(keyword) 35time.sleep(3) 36 37browser_form = browser.find_element_by_class_name("searchbox-searchbutton") 38time.sleep(3) 39browser_form.click() 40time.sleep(3) 41 42%カレントページのURLを取得 43main_url = browser.current_url 44 45%HTMLを取得 46response = req.urlopen(main_url) 47%情報を取得 48parse_html = BeautifulSoup(response,'html.parser') 49 50 51while click_point < 20: 52 53 print(click_point) 54 #指定の店舗をクリック 55 browser.find_elements_by_css_selector('.place-result-container-place-link')[click_point].click() 56 57 time.sleep(3) 58 59 page_source = browser.page_source 60 soup = BeautifulSoup(page_source,'html.parser') 61 62 %店名を抽出し順位表示 63 title = soup.find(class_="section-hero-header-title-title GLOBAL__gm2-headline-5") 64 65 time.sleep(3) 66 67 MEO_list.append(title.text.strip()) 68 print(MEO_list) 69 70 if MEO_list[-1] == target_word: 71 meo_rank = click_point-1 72 73 click_point += 1 74 75 browser.get(main_url) 76 time.sleep(3) 77 print("再度アクセスしました") 78 79if 0 < meo_rank < 20: 80 MEO_rank = "{}位".format(meo_rank) 81 print(MEO_rank) 82else: 83 MEO_rank = "圏外" 84 print(MEO_rank) 85 86wb = openpyxl.load_workbook("#指定ファイルへのパス") 87ws = wb["MEO"] 88 89c1 = ws.cell(row=5, column=5) 90c1.value = format(MEO_rank) 91 92wb.save("#指定ファイルへのパス")