質問: ExcelVBAによるwebデータ抽出ついて質問です! 地方競馬出馬表に記載されている各馬の前走、前々走、三走前のレースの日付を 分析ツールに自動で入力できるようにしたいです。 下記画像 (左側)分析ツール (右側)地方競馬出馬表 画像のオレンジ部分が日付に該当する部分です。 参考URL (地方競馬出馬表)
回答: Excelの書き込みセルがイマイチ不明なので、とりあえずA1セルから順に書き込む形で 前半部分のHTMLの読み込みは前回と同じ (この部分は基本形なんでFunctionとかで呼び出すようにすればいい) 後半部 class="tBorder"のタブが馬ごとのデータになっているので その中の class="raceInfo"のタグが過去出走のレース基本データ あとはその中の日付の部分をSplitで切り出しで取り出し 馬によっては過去3走までのデータがない場合もあるので R_Count > 2 (インデックスは0から始まるので)前3走まで取り出したら抜ける処理を入れます 前回のコメント >VBAの基礎を学べば上記のような処理は簡単にできるようになりますか? スクレイピングの基本がわかればそれほど難しくはないので頑張って勉強を Sub Sampl() Dim HtmlDoc As Object Set HtmlDoc = CreateObject("htmlfile") With CreateObject("MSXML2.XMLHTTP") .Open "GET", "" .send Do While .readyState < 4 DoEvents Loop HtmlDoc.Write .responseText End With Application.Wait Now() + TimeValue("00:00:02") Dim R_No As Object, R_Date As Object, R_Count As Integer Dim Row_Count As Integer Row_Count = 1 For Each R_No In HtmlDoc.getelementsbyclassname("tBorder") R_Count = 0 For Each R_Date In R_No.getelementsbyclassname("raceInfo") Cells(Row_Count, R_Count + 1) = Split(Split(R_Date.innertext, " ")(0), " ")(1) R_Count = R_Count + 1 If R_Count > 2 Then Exit For Next Row_Count = Row_Count + 1 Next End Sub