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

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

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

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

selenium

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

Q&A

解決済

1回答

850閲覧

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

violet

総合スコア1

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

selenium

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

0グッド

0クリップ

投稿2023/09/11 04:03

編集2023/09/11 04:20

実現したいこと

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()

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

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

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

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

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

meg_

2023/09/12 10:46

> ・AIPはなるべく使用したくないです。 何故ですか?
guest

回答1

0

ベストアンサー

Pythonを使用してスクレイピングをしています。

やらないでください。Googleマップの利用規約で、明確に禁止しています。

 2. 禁止行為。本規定の第 2 条を遵守することが、Google マップ / Google Earth の使用ライセンス付与の条件となります。Google マップ / Google Earth の使用に際して、お客様(およびお客様の代理人)による以下の行為は禁止されています。
(略)
b. コンテンツをコピーすること(ただし、Google マップ、Google Earth、ストリートビューの使い方と許可に関するガイダンスのページ、または適用される知的財産法で許可されている場合(これには「フェアユース」が含まれます)を除く)。
c. コンテンツを大量にダウンロードすること(後略)

投稿2023/09/11 06:56

maisumakun

総合スコア145186

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

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

violet

2023/09/13 01:33

存じ上げませんでした。 教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問