メモ

主にプログラミング系の備忘録

TripAdviserのスポット一覧のURLを取得

GoogleでKeyWordを+でつなぐ+「site:www.tripadvisor.jp」で検索
→検索結果タイトル&本文にKeyWordsが含まれるもののリンク先URLを取得
Hitするものが存在しなかった場合は空文字を返す
KeyWords はスポット名 + 地域名(市区町村あたり) + ジャンル(観光/グルメ)あたりを想定

ieCheckは以下のものを使用 ついでに1秒ウェイトを入れるためのmySleep関数をここに書いてる
https://www.vba-ie.net/code/iecheck.html

Public Function getTAURL(vKeyWords As Variant) As String

  Dim ie As InternetExplorer: Set ie = New InternetExplorer
  Dim sKeyWords As String: sKeyWords = ""
  Dim i As Long
  Dim f As Boolean
  For i = LBound(vKeyWords) To UBound(vKeyWords)
    If sKeyWords <> "" Then sKeyWords = sKeyWords & "+"
    sKeyWords = sKeyWords & CStr(vKeyWords(i))
  Next i
  ie.navigate "https://www.google.co.jp/search?num=100&q=" & sKeyWords & "+site%3Awww.tripadvisor.jp"
  Call MySleep(1000)
  Call ieCheck(ie)
  Dim el As IHTMLElement
  
' 地名+駅名とかにするとh3だけの評価ではだめなので、本文部分もチェックする
  For Each el In ie.Document.getElementsByClassName("srg")(0).getElementsByClassName("rc")
    f = True
    For i = LBound(vKeyWords) To UBound(vKeyWords)
      If InStr(1, el.innerText, CStr(vKeyWords(i))) = 0 Then
        f = False
        Exit For
      End If
    Next i
    If f Then Exit For
  Next el

  If f Then
    getTAURL = el.getElementsByTagName("h3")(0).getElementsByTagName("a")(0).getAttribute("href")
  Else
    getTAURL = ""
  End If
  ie.Quit
End Function