EXCEL VBA Google Chrome(グーグルクローム)の操作・住所から最寄り駅を検索・webスクレイピング(自動収集・テクニック)

 

EXCEL VBA Google Chrome(グーグルクローム)の操作・住所から最寄り駅検索・webスクレイピング(自動収集・テクニック)

 

 

●はじめに

今回説明するプログラムは、GoogleChromeとVBAを組み合わせたサンプルプログラムになります。以前、InternetExplorerでの住所からの最寄り駅を検索する方法を説明いたしましたが、今回は、GoogleChromeでの住所データからWeb検索で最寄り駅を検索する方法を説明いたします。インターネットの地図サイト(Yahoo!地図)を利用して、住所情報を入力して検索結果を元に最寄り駅情報を入手します。調べる情報の件数が1~3件程度なら、自分自身で手入力で調べれば良いと思いますが、それが100件を超える場合、時間も掛かりますし手間も掛かります。社内の人事情報等で、個人の住所から該当する最寄り駅を探す場合などに、便利だと思います。それでは、順番に説明いたします。


●注意:下記の各プログラムを実行するには、SeleniumBasic事前設定が必要になります。下記を参照して下さい。

 

●【EXCEL VBAとInternetExplorerの組み合わせで情報を取得する際は、下記を参照して下さい】

 

 

 

GoogleChromeスクレピング 住所データから最寄り駅(近隣の駅)検索を行う(1件分:取得)

 

 

●プログラム説明  (サンプル①)

下記のプログラムは、GoogleChromeとVBAを組み合わせて、住所データから最寄り駅を検索するサンプルプログラムです。EXCELシートに住所の一覧を作成して、その住所データを元に、WebサイトのYahoo!地図を利用して最寄り駅検索を行い、最寄り駅の1ヶ所分(一番近い駅)のデータをEXCELシートに転記します。

 

【プログラム内容】

①【住所の一覧データから最寄り駅を検索します】(1駅)一番近い駅

 

②Webサイト【Yahoo!地図】から最寄り駅を検索します。

【プログラムの流れ】

① B列「都道府県庁」の最終行を取得します。
② GoogleChromeを立ち上げます。(起動)
③ Yahoo!地図のWebを開きます。
④ C列「住所」データをYahooM地図!Webページの検索欄に登録します。
⑤ Yahoo!地図「検索」ボタンをクリックして検索を行います。
⑥ Yahoo!地図の検索結果により、近隣の駅の情報を取得します。
⑦ 近隣の駅の取得結果をD列に代入します。
⑧ B列の最終行分まで繰り返します。④へ戻る

 

【プログラム実行条件】
① SeleniumBasic事前設定をサイト(https://akira55.com/seleniumbasic_googlechrome/)より行って下さい。
② VBEの参照設定を行う【VBEの画面より】【ツール】⇒【参照設定】を選択して【Selenium Type Library】にチェックを入れます。

【注意】

なお、Webスクレイビングを利用する際は、問い合わせ先のWebサーバーに負荷がかかりますので、連続利用はお控え下さい。
Webスクレピングは、データ収集先のホームページに変更・修正等があった場合は、その都度プルグラムの修正が必要になします。
※下記のプログラムは、2021年3月時点でのプログラムです。

 

'******** AKIRA55.COM *******
'
'VBEの参照設定を行う【VBEの画面より】【ツール】⇒【参照設定】を選択して【Selenium Type Library】にチェックを入れます。
'
Sub transportation_expenses01()  'Yahoo!JAPAN!路線情報(乗り換え案内) 1件表示
 
    Dim Driver As New Selenium.WebDriver
    Dim Webtxt As String
    Dim I, lRow As Long
    
    lRow = Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得します。
    
    With Driver
        .Start "chrome"
    
        For I = 3 To lRow  'B列に登録されている最終行まで繰り返します。
            
            On Error Resume Next
            
            .Get "https://map.yahoo.co.jp/" 'Yahoo!Map!を開きます
            
            .Wait 2000
 
            .FindElementByCss("#search_box_keyword > form > div > div > input").SendKeys Cells(I, "C") 'C列のセルから出発駅を入力します。
            .FindElementByCss("#search_box_keyword > form > div > button").Click  '検索をクリック
         
            .Wait 2000  'ページの表示待ち
            
            If I = 3 Then
                            .FindElementByCss("#search_box_keyword > form > div > div > input").SendKeys Cells(I, "C") 'C列のセルから出発駅を入力します。
                            .FindElementByCss("#search_box_keyword > form > div > button").Click  '検索をクリック
                            .Wait 2000  'ページの表示待ち
            End If

             Webtxt = .FindElementByCss("#poi > div.POI__content > div.POI__contentBody > div.Keyvalue > ul > li.Keyvalue__listItem.Keyvalue__listItem--nearestStations > span:nth-child(2) > span:nth-child(1)").Text '検索結果より、運賃を取得します。
             Cells(I, "D") = Webtxt  '運賃の取得結果をE列に代入します。
             
             On Error GoTo 0
 
        Next I  '全てのデータが終わるまで繰り返します。
    
    
        .Close
    
    End With
    
    Set Driver = Nothing
    
    
End Sub
'

 

 

●実行前~実行後 ※プログラム実行後、EXCELシートに登録されている【住所:C列】情報からWebサイト「Yahoo!地図」に検索を行い、最寄り駅が表示され、EXCELシートに結果を転記されました。今回は、都道府県庁の住所を元に最寄り駅(近隣の駅)を検索しました。

 

 

 

 

GoogleChromeスクレピング 住所データから最寄り駅(近隣の駅)検索を行う(3件分:取得)

 

 

 

●プログラム説明 (サンプル②)

下記のプログラムは、上記サンプルプログラム①の応用になります。GoogleChromeとVBAを組み合わせて、住所データから最寄り駅を検索するサンプルプログラムですが、今回は、EXCELシートの住所の一覧を元に、WebサイトのYahoo!地図を利用して最寄り駅検索を行い、最寄り駅の3か所(駅)データをEXCELシートに転記します。

 

【プログラム内容】
①【住所の一覧データから最寄り駅を検索します】(3駅)
  ※青枠の住所で検索します。
赤枠に「近隣の駅」3駅が表示されます。今回は、この3駅分のデータをEXCELに転記します。

②【C列の住所データを元に検索します。】



③ 
【D列・E列・F列に最寄り駅(近隣の駅)の情報が転記されます。】

 

【プログラムの流れ】

① B列「都道府県庁」の最終行を取得します。
② GoogleChromeを立ち上げます。(起動)
③ Yahoo!地図のWebを開きます。
④ C列「住所」データをYahooM地図!Webページの検索欄に登録します。
⑤ Yahoo!地図「検索」ボタンをクリックして検索を行います。
⑥ Yahoo!地図の検索結果により、近隣の駅の情報を取得します。
⑦ 近隣の駅の取得結果をD列に一番近い駅・E列に2番目に近い駅・F列に3番目に近い駅を代入します。
⑧ B列の最終行分まで繰り返します。④へ戻る

 

【プログラム実行条件】
① SeleniumBasic事前設定をサイト(https://akira55.com/seleniumbasic_googlechrome/)より行って下さい。
② VBEの参照設定を行う【VBEの画面より】【ツール】⇒【参照設定】を選択して【Selenium Type Library】にチェックを入れます。

 

【注意】

なお、Webスクレイビングを利用する際は、問い合わせ先のWebサーバーに負荷がかかりますので、連続利用はお控え下さい。
Webスクレピングは、データ収集先のホームページに変更・修正等があった場合は、その都度プログラムの修正が必要になりますので、ご了承ください。
※下記のプログラムは、2021年3月時点でのプログラムです。

 

 

'
'VBEの参照設定を行う【VBEの画面より】【ツール】⇒【参照設定】を選択して【Selenium Type Library】にチェックを入れます。
'
Sub transportation_expenses03()  'Yahoo!JAPAN!路線情報(乗り換え案内) 3件表示 ループ
 
    Dim Driver As New Selenium.WebDriver
    Dim Webtxt As String
    Dim I, L, lRow As Long
    
    lRow = Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得します。
    
    With Driver
        .Start "chrome"
    
        For I = 3 To lRow 'B列に登録されている最終行まで繰り返します。
            
            On Error Resume Next
            
            .Get "https://map.yahoo.co.jp/" 'Yahoo!Map!を開きます
            
            .Wait 5000
 
            .FindElementByCss("#search_box_keyword > form > div > div > input").SendKeys Cells(I, "C") 'C列のセルから出発駅を入力します。
            
            .FindElementByCss("#search_box_keyword > form > div > button").Click  '検索をクリック
         
            .Wait 2000  'ページの表示待ち

            For L = 1 To 3 ' Webページから最寄り駅検索を1~3件を行います。
            
                 Webtxt = .FindElementByCss("#poi > div.POI__content > div.POI__contentBody > div.Keyvalue > ul > li.Keyvalue__listItem.Keyvalue__listItem--nearestStations > span:nth-child(2) > span:nth-child(" & L & ")").Text '検索結果より、運賃を取得します。
                 Cells(I, 3 + L) = Webtxt    '運賃の取得結果をE列に代入します。
                
            Next L
             
             On Error GoTo 0
 
        Next I  '全てのデータが終わるまで繰り返します。
    
    
        .Close
    
    End With
    
    Set Driver = Nothing
    
    
End Sub
'

 

 

●実行前~実行後 ※プログラム実行後、EXCELシートに登録されている【住所:C列】情報からWebサイト「Yahoo!地図」に検索を行い、最寄り駅が表示され、EXCELシートに結果を転記されました。今回は、都道府県庁の住所を元に最寄り駅(近隣の駅)3ヶ所分が検索されました。

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA