VBAのIE処理でポータルサイトのデータを抽出したい 削除
Message#2 2014年10月20日(月)20時36分 From: 通りすがり |
案外簡単だったのでやってみた。 一応このサイトのサブルーチン使ってるので、そこは省きます。 以下サンプルで1回しか検証していないけど、うまくVBAが走ったのでなんとかいけるかと思います。 ところどころエラーがおこるようであれば、自分でカスタマイズしてね。 Sub 雑貨屋詳細データ抽出() Dim urlNO As String Dim r As Integer, n As Integer, i As Integer, x As Integer '▼詳細ページURL抽出 r = maxRC(, 1, 1) 'サイトを開く 'このサイトのサブルーチンを拝借 Call ieView(objIE, "http://zakka.30min.jp/") '一覧ページのページ番号をループ 'ここはとりあえず東京(/tokyo/)で設定しているから好きなディレクトリに変更すること 'ページ番号までは自動取得がめんどくさかったので、とりあえず100にしています。 'それぞれのページ数にかえること For n = 1 To 2 'For n = 1 To ★変更★ urlNO = "http://zakka.30min.jp/fukuoka/" & n 'urlNO = "http://zakka.30min.jp/★変更★/" & n '一覧ページを表示 'このサイトのサブルーチンを拝借 Call ieNavi(objIE, urlNO) '詳細URL取得(A列にどんどん格納していく) For i = 0 To objIE.document.Links.Length - 1 If InStr(objIE.document.Links(i).innerText, "スポット詳細を見る") > 0 Then Cells(r, 1) = objIE.document.Links(i).href r = r + 1 End If Next i Next n '▲ここまでが詳細ページのURL取得 '▼詳細データ抽出 '一覧で取得したデータ数 r = maxRC() For i = 2 To r '詳細ページをループで表示 'このサイトのサブルーチンを拝借 Call ieNavi(objIE, Cells(i, 1)) '紹介文取得 For Each objTag In objIE.document.getElementsByClassName("guide_place_text") Cells(i, 3) = objTag.innerText Exit For Next 'D列以降に店舗情報 x = 4 'テーブルにある情報をどんどん取得 For Each objTag In objIE.document.getElementsByTagName("td") Cells(i, x) = objTag.innerText x = x + 1 Next Next i '▲ここまでが詳細ページの情報取得 MsgBox "完了だ!" End Sub |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。