重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

VBAでニュースのタイトルを取得しています。

yahoo newsのタイトル一覧を取得しています。

ループの、iが適当な数でtry and catchで例外処理をしています。

別にこのコードで出来ているのですが・・・・

これを、該当class("_2cXD1uC4eaOih4-zkRgqjU")があるだけ繰り返したいのですが、

ニュースのタイトル分だけループを回すなにかいい方法はありますか?




Option Explicit
Sub IEGet03()

Dim objIE As InternetExplorer

Dim detail2 As Variant



Set objIE = New InternetExplorer

Dim i As Integer





objIE.navigate "https://www.yahoo.co.jp/"
objIE.Visible = True
Debug.Print "スタート"


Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Loop

detail2 = objIE.document.getElementsByClassName("_1XAfHUWtx6tfYZuWDVjNxZ")(0).outerHTML






On Error GoTo ErrorHandler


For i = 0 To 10

Debug.Print _
objIE.document.getElementsByClassName("_2cXD1uC4eaOih4-zkRgqjU")(i).outerText
Next

ErrorHandler:
Debug.Print "終わり"

Finally:
Debug.Print "終了"



End Sub

A 回答 (2件)

こんばんは


ご質問の意味がちょっと解らないのですが
エラーで終わらせたくないと言う事でしょうか?
ForループをEachで行うのはどうでしょう?(未検証)
For Each obj In objIE.document.getElementsByClassName("_2cXD1uC4eaOih4-zkRgqjU")
Debug.Print obj.outerText
Next
みたいな感じ。
    • good
    • 0
この回答へのお礼

そうです。
実装して、無事エラーがなく出来ました。

有難うございます。

お礼日時:2021/06/05 20:00

スクレイピングするより、RSSが提供されていますから、望むRSSを取得して情報を得た方が良さそうです。


https://news.yahoo.co.jp/rss
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!