ここから本文です

VBAでのwebスクレイピングでの質問です。 下記URLのコンテナ№「APZU4562140」を...

imo********さん

2019/7/2010:49:55

VBAでのwebスクレイピングでの質問です。

下記URLのコンテナ№「APZU4562140」を入力し、Searchボタンを押します。

↓URL
https://www.apl.com/ebusiness/tracking

次に表示された画面の、添付した画像の丸部分の日付をEXCELに表示させたいと思っています。

どなたかお分かりになる方がおられましたら、ご教授願いたいです。

独学で進めていますが、idタグ等があれば、問題ないのですが、

idタグがない物の要素の指定の理解が深まりません。

フレーム構造等があることは教えていただきましたが、構造から調べる方法も

今現在理解出来ておりません。

大変申し訳ございませんが、ご教授願います。

VBAで作成しており、宣言等はしてあります。

よろしくお願い致します。

APZU4562140,Set objTable,ie.Navigate,Set objIE,VBA,webスクレイピング,コンテナ

閲覧数:
27
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2019/7/2012:39:47

MOVES列が"Train arrival for export"の行のDATE列の値をA1に表示します。

Sub sample()
Dim ie As Object
Dim table As Object
Dim r As Integer
'
Set ie = CreateObject("InternetExplorer.Application") 'ie
ie.Visible = True 'ie表示
ie.navigate "https://www.apl.com/ebusiness/tracking" '目的のURL
Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop '表示完了待ち
ie.document.getElementById("Reference").Value = "APZU4562140" 'Reference(s)
ie.document.getElementById("btnTracking").Click ''Search
Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop '表示完了待ち
'
Set table = ie.document.getElementsByTagName("table")(0) 'このページのテーブル
Range("A1").Value = "無し" '無かった場合の回答
For r = 1 To table.Rows.Length - 1 '注目行を2行目から最終行まで(0から始まるため)
If Trim(table.Rows(r).Cells(2).innerText) = "Train arrival for export" Then '注目行の3列目(MOVES)が"Train arrival for export"なら
Range("A1").Value = table.Rows(r).Cells(0).innerText 'A1に注目行の1列目(DATE)の値を表示
Exit For 'Forを抜ける(終わり)
End If
Next
ie.Quit 'ie終了
End Sub

  • hot********さん

    2019/7/2012:53:57

    ちなみにhtmlを見ると、"Train arrival for export"の所は、きれいに<td></td>の中に入ってないので、後ろに半角スペースが入っているようです。
    "Train arrival for export "(最後にスペース)でチェックするか、 Trim(tabless.Rows(i).Cells(2).innerText)でチェックするか、Like "Train arrival for export*"でチェックするか、Instr(tabless.Rows(i).Cells(2).innerText,"Train arrival for export")>0でチェックするか、などでチェックする必要があります。


返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/7/20 13:04:29

またまたhotさんですね。
さすがカテゴリーマスターです。
ご回答頂けた皆さんにも感謝いたしますが、こちらのご回答を
ベストアンサーとさせていただきます。
まだまだ分岐処理はございますが、何とかなりそうです。
ありがとうございました。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

pro********さん

2019/7/2011:42:45

サンプルコードだけ載せておきますね。

Sub test()
Dim objIE As InternetExplorer
Dim objTable As HTMLTable
Dim objRow As HTMLTableRow
Dim objCell As HTMLTableCell
Dim strDate As String
Dim bolFound As Boolean

Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate "https://www.apl.com/ebusiness/tracking/search?SearchBy=Container&Re..."
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop

strDate = ""
bolFound = False
Set objTable = objIE.document.getElementsByTagName("Table")(0)
For Each objRow In objTable.Rows
For Each objCell In objRow.Cells
If objCell.className = "is-headerdata js-openrow" Then
If objCell.innerText = "Train arrival for export" Then
bolFound = True
Exit For
End If
ElseIf objCell.className = "is-header js-openrow" Then
strDate = objCell.innerText
End If
Next
If bolFound = True Then
Exit For
End If
Next

Set objCell = Nothing
Set objRow = Nothing
Set objTable = Nothing
objIE.Quit
Set objIE = Nothing

Debug.Print strDate

End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

web********さん

2019/7/2011:33:18

Frameは無視しても問題ない

>下記URLのコンテナ№「APZU4562140」を入力し、Searchボタンを押します。

入力やSearchクリックは必要ない
Search結果のURLが

https://www.apl.com/ebusiness/tracking/search?SearchBy=Container&Re...

Reference= の後ろにコンテナNoを繋げて直接navigateすればいい

-----
>添付した画像の丸部分の日付

コレが意味不明
丸部分の指定条件はなに?

よくわかんないので、テーブル全体を取り込んでシートに書き込むマクロを参考としてあげておきます

Sub test()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.application")
Dim 基本URL As String
基本URL = "https://www.apl.com/ebusiness/tracking/search?SearchBy=Container&Re..."

ie.navigate (基本URL & "APZU4562140")
Do While ie.Busy = True Or ie.readyState <> 4
DoEvents
Loop

Dim Table As HTMLTable
Set Table = ie.document.getElementsByTagName("table")(0)

With New MSForms.DataObject
.SetText Table.outerHTML
.PutInClipboard
End With
ActiveSheet.PasteSpecial Format:="Unicode テキスト", NoHTMLFormatting:=True

ie.Quit
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる