[[20080120121251]] 『過去の天気の取り込み』(まさし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『過去の天気の取り込み』(まさし)

たとえば
http://weather.yahoo.co.jp/weather/jp/past/28/6310.html?c=2008&m=1

このような頁の天気(WEB上では晴れや曇りの記号ですが、文字として
取り出したい)や最高気温、最低気温を自動的に
シートに取り込むのはどうすれば、いいのでしょうか?

外部データの取り込み、WEBクエリですればいいのはわかるのですが、
具体的な操作方法がわかりません。

誰か、教えて下さい。


VBAを使った例です。

新規ブックの標準モジュールに

'===============================================================

Sub main()

    On Error Resume Next
    Dim ans As Variant
    Dim ie As Object
    Dim tbl As Object
    Dim rw As Object
    Dim cll As Object
    Dim idx As Long
    Dim g0 As Long, g1 As Long
    Application.ScreenUpdating = False
    Set ie = CreateObject("InternetExplorer.Application")
    With ie
       .Visible = False
       idx = 1
       .navigate "http://weather.yahoo.co.jp/weather/jp/past/28/6310.html?c=2008&m=1 "

       Do While .Busy = True Or .readyState <> 4
          Loop
       For Each tbl In .document.body.all
          If TypeName(tbl) = "HTMLTable" Then
             Err.Clear
             For Each rw In tbl.Rows
                g1 = 0
                For Each cll In rw.Cells
                   With Cells(g0 + 1, g1 + 1)
                      .Value = Replace(cll.innertext, vbCr, "")
                      idx = InStr(cll.innerHTML, "IMG alt=")
                      If idx > 0 Then
                         ans = Split(Replace(cll.innertext, vbCr, ""), vbLf)
                         ans(1) = Mid(cll.innerHTML, InStr(cll.innerHTML, "IMG alt=") + Len("IMG alt="), 1)
                         .Value = Join(ans, vbLf)
                         End If
                      End With
                   g1 = g1 + 1
                   Next
                g0 = g0 + 1
                Next
             End If
          Next
       g0 = g0 + 1
       .Quit
       End With
'    Range(Columns(1), Columns(2)).AutoFit
    Set tbl = Nothing
    Set ie = Nothing
    Set rw = Nothing
    Set cll = Nothing
    Erase ans
    Application.ScreenUpdating = True
End Sub

として、適当なシートをアクティブにしてmainを実行してみてください。

取り合えず、表の形式の天気は取得できます。

が・・・。

他の質問サイトのでも同じような質問がたまにあります。

遊びとして作る分には良いのでしょう(私はお遊びでしかこの手のコードは作りません)が、

他人が作ったサイトに対して、

細かい加工を施してデータを取得するコードなんて、非常にメンテナンスが大変ですよ!!

相手サイトの構造がちょっと変われば、たちまち動作しなくなります。

その辺りの事情も考慮してお使いください

ichinose


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.