投稿/コメントを表示します。

いつもありがとうございます。お忙しい中、すみません。一つ質問させて下さい。

以下のような作りのWebページのTableタグから、各地域のデータを取得したいと考えています。
但し、北海道は、THタグの見出しとSPANタグの件名の両方が"北海道"となっているため、
If文でTHタグの内容が"北海道"の時は、Debug.printで書き出さないと設定したのですが
何故かIf文が適用されない状況です。


HTMLの中身
<TBODY>
<TR>
 <TH>北海道 </TH>
 <TD><SPAN>北海道</SPAN> </TD>
</TR>

<TR>
 <TH>東北 </TH>
 <TD><SPAN>青森県</SPAN><WBR><SPAN>秋田県</SPAN>...</TD>
</TR>
'以下に紹介するライブラリの参照設定をしてください
'Microsoft WinHTTP Services, version 5.1 -> HTTPリクエストをするため
'Microsoft HTML Object Library -> コンテンツのDOMを解析するため
'Microsoft Scrintping Runtime -> Dictionaryを使用するため
Sub GetArea()
    Dim url As String
    url = "https://www.sej.co.jp/products/area.html"

    Dim xh As New WinHttp.WinHttpRequest
    xh.Open "GET", url, False
    xh.send
    
    Dim sCode As String
    sCode = xh.Status
    If sCode <> 200 Then
        MsgBox "リクエストに失敗しました" & vbNewLine & sCode
    End If
    
    'htmlをDOMとして取得する。そのための変数を宣言。
    Dim oHTml As New MSHTML.HTMLDocument
    oHTml.body.innerHTML = xh.ResponseText 'htmlボディーをDOMとして取得
    
    Dim tr As MSHTML.HTMLHeadElement
    Dim spa As MSHTML.HTMLHeadElement
    Dim tiku As String
    
    For Each tr In oHTml.getElementsByTagName("tbody")(0).getElementsByTagName("tr")
        tiku = tr.ChildNodes(0).innerText
        'TRタグ内の0番目の子要素(THタグ)内のデータを取得
        '北海道はSpanタグ内にもあるため、ここでは北海道の時はDebug.printしないようIf文追加
        'なぜかIf文が適用されない状況です。
        If tiku <> "北海道" Then
            Debug.Print tiku
        End If
        
        'TRタグ内の1番目の子要素(TDタグ)内のSpanタグ内のデータを取得
        For Each spa In tr.ChildNodes(1).getElementsByTagName("span")
            Debug.Print spa.innerText
        Next
        
    Next
    
End Sub

2021/01/05 13:55