Googleマップのスクレイピングについて

実現したいこと

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=123 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+=250 print(len(name_list))51 52 driver.quit()

コメントを投稿

0 コメント