人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://okwave.jp/212/423/c450.html
上記のウェブページにアクセスして全リンクを取得したいです。
今だと(全43,619件)リンクあるので、このリンクを取得したいと思っています(1ページに表示されているリンクのみ取得したいのではありません)。uwscもしくはVBAもしくはVBのWebBrowserコントロールで実現できる方法をお教えください。

●質問者: akaired
●カテゴリ:コンピュータ インターネット
✍キーワード:UWSC VB VBA アクセス ウェブページ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ken3memo
●100ポイント ベストアンサー

Sub Link情報を取得する()

'次へのボタンを押す。

Dim objIE As Object

Dim strURL As String

Dim strNEXT As String '次に表示するURL

Dim i As Integer

Dim nYLINE As Integer

'IEのオブジェクトを作成する

Set objIE = CreateObject("InternetExplorer.application")

objIE.Visible = True

'初期ページを代入

strNEXT = "http://okwave.jp/212/423/c450.html" 'URL代入

nYLINE = 10 '10行目からせっとするので

While strNEXT <> "" '次のURLが入っている間まわる

'ページを開く(.Navigateで表示する。)

objIE.Navigate strNEXT 'アドレスを渡し表示する

'読み込み完了となるまで、ループする。

While objIE.ReadyState <> 4 Or objIE.Busy

DoEvents

Wend

'↑これだと、広告画像の表示を待つから、クールじゃないなぁ。

'

'リンクを探す

'リンク数分まわす A列にアンカーテキスト B列にURLを書く

strNEXT = "" '次のURLを初期化

'上の次へがくるまで、空読み。

For i = 0 To objIE.Document.Links.Length - 1

'次へが見つかったら、抜ける※ここから下に質問があるので、、、、

If Left(objIE.Document.Links(i).innerText, 2) = "次へ" Then 'テキストが 次へ

strNEXT = objIE.Document.Links(i).href 'URL(次へ)を代入

Exit For 'ループを抜ける

End If

'↑あっ、これだと、最後のページが取れないか、、、

Next i

For i = i + 1 To objIE.Document.Links.Length - 1

'セット条件を http://okwave.jp/qa があるか?にする。

If Left(objIE.Document.Links(i).href, 19) = "http://okwave.jp/qa" Then

Cells(nYLINE, "A") = "'" & objIE.Document.Links(i).innerText 'テキスト

Cells(nYLINE, "B") = objIE.Document.Links(i).href 'URL

nYLINE = nYLINE + 1 'セット位置を+1する

End If

'2回目の次へが見つかったら、強制的に抜ける※2回目の次へは質問よりしたなので、、

If Left(objIE.Document.Links(i).innerText, 2) = "次へ" Then 'テキストが 次へ

Exit For 'ループを抜ける

End If

Next i

Cells(nYLINE, "A").Select '普通イラナイケド、進行状況見たいので、、、

Wend

objIE.Quit 'IEを閉じる

End Sub

問題点1.巡回中、データ取得中に新しい質問が上がったとき、1つデータが増えるので、重複して取得してしまう。

問題点2.次へ、、で判断しているので、最終ページ。

問題点3. 画像Offにしてないので、広告・バナーの読み込みまで待ってしまい、時間がかかる。

※実際、最後まで、テストしてません。※Windows XP IE8 Excel2003 で 約20ページテストしました。

が、時間がかかるので、問題点1は必ず、発生すると思いますよ、、、

叩き台として、使ってみてください。

※手前味噌のサンプル叩き台は、 http://ie.vba-ken3.jp/sample/005/2009-06-02.html を変更しました。

バグなどが残っていたら、スミマセン。

うまく、動作することを願いつつ、失礼します。

◎質問者からの返答

すごい!ありがとうございます、感動しました!感謝感謝です!!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ