実現したいこと
Googleマップでリスト化したものの情報を20件以上取得したい
21件目以降の情報の取得のやり方をご教授いただきたいです。
具体的なサンプルコードなどございましたらありがたいです。
前提
・Pythonを使用してスクレイピングをしています。
・Googleマップでリスト化した施設が20件以上あります。
それをそれを順番にクリックして施設の名称や電話番号などを取得したいです。
現在20件までの取得は出来るのですが、21件目から取得できません。
・AIPはなるべく使用したくないです。
試してみたこと
・ページの読み込みの際にページの最後まで読み込む
・javascriptでページのスクロールを試しましたが、うまくできませんでした。
Python
1def google_get_infomtion(url): 2 # オプション 3 options=Options() 4 options.page_load_strategy = 'normal' 5 # ドライバーの設定 6 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options) 7 8 9 # ページ解析 10 response=requests.get(url) 11 response.encoding=response.apparent_encoding 12 bs=BeautifulSoup(response.text,"html.parser") 13 # ページ遷移 14 driver.get(url) 15 WebDriverWait(driver,15).until(EC.presence_of_all_elements_located) 16 # driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 17 18 time.sleep(2) 19 # 本文から施設名タグのXPathを取得 20 name_list=driver.find_elements(By.CLASS_NAME,value="kiaEld ") 21 print(len(name_list)) 22 name_cnt=1 23 24 # 繰り返し処理 25 # for cnt in range(len(name_list)): 26 for cnt in range(50): 27 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 28 # XPath生成 29 link_click_xpath='/html/body/div[3]/div[8]/div[9]/div/div/div[1]/div[2]/div/div[1]/div/div/div[6]/div['+str(name_cnt)+']/div[1]/div[2]/div[1]/div[1]/div[1]/div/h3/span' 30 # print(link_click_xpath) 31 # 施設クリック 32 link_click=driver.find_element(By.XPATH,link_click_xpath) 33 link_click.click() 34 time.sleep(2) 35 36 37 # 施設名を取得 38 store_name=driver.find_element(By.CLASS_NAME,value='lMbq3e') 39 40 store_name=store_name.find_element(By.TAG_NAME,value='h1').text 41 print(store_name) 42 43 # ブラウザバック 44 back_icon_xpath="/html/body/div[3]/div[8]/div[3]/div[1]/div[1]/div/div[1]/button/span" 45 back_icon=driver.find_element(By.XPATH,back_icon_xpath) 46 back_icon.click() 47 time.sleep(2) 48 49 name_cnt+=2 50 print(len(name_list)) 51 52 driver.quit()

回答1件
あなたの回答
tips
プレビュー