質問するログイン新規登録

Q&A

解決済

2回答

2467閲覧

Selenium 指定文字列を含むリンク先URLを全て取得したい

__Me__

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

1グッド

1クリップ

投稿2020/03/14 08:07

1

1

お世話になります。

ページ内から、指定文字列を含むリンク先URLを全て取得し、
クローリングを行うツールを作成しています。

VBA

1Dim anchor As New HTMLAnchorElement 2 3For Each anchor In objIE.Document.Links 4 5 '検索したURLに特定文字が入っていた場合のみSheet2に蓄積 6 ' If anchor Like "*/kensaku/*" Then 7 8 ' ws1.Range("AE4").Value = anchor.href 9 ' Last_Row = ws1.Cells(Rows.Count, 31).End(xlUp).Row 10 ' Last_Row = Last_Row + 1 11 12 ' End If 13 14

このような記述をしたいのですが、
SeleniumではHTMLAnchorElementの宣言が出来ないようで行き詰まっています。

どなたかご教示いただけないでしょうかm(__)m
もちろん上記方法以外でも構いません。

宜しくお願い致します。

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答2

0

Selenium なのか等 よく分かりませんが

VBA

1#If VBA7 Then 2 Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) 3#Else 4 Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) 5#End If 6 7 8 9 10Sub test() 11 12 13 Dim Driver As New Selenium.WebDriver 14 Driver.Start "chrome" 15 Driver.Get "検索対象URL" 16 17 For Each anchor In Driver.FindElementsByTag("a").Attribute("href") 18 19 20 '検索したURLに特定文字が入っていた場合のみSheet2に蓄積 21 If anchor Like "*/kensaku/*" Then 22 23 Debug.Print anchor 24 ' ws1.Range("AE4").Value = anchor 25 ' Last_Row = ws1.Cells(Rows.Count, 31).End(xlUp).Row 26 ' Last_Row = Last_Row + 1 27 28 End If 29 30 Next 31 32End Sub 33 34Sub test_2() 35 36 Dim objIE 37 Dim anchor As HTMLAnchorElement 38 39 40 Set objIE = CreateObject("InternetExplorer.Application") 41 objIE.Visible = True 42 objIE.navigate "検索対象URL" 43 44 Do While objIE.Busy = True Or objIE.readyState <> 4 45 DoEvents 46 Sleep 1 47 Loop 48 49 Do While objIE.document.readyState <> "complete" 50 DoEvents 51 Sleep 1 52 Loop 53 54 For Each anchor In objIE.document.Links 55 56 57 58 '検索したURLに特定文字が入っていた場合のみSheet2に蓄積 59 If anchor.href Like "*/kensaku/*" Then 60 61 Debug.Print anchor.href 62 ' ws1.Range("AE4").Value = anchor.href 63 ' Last_Row = ws1.Cells(Rows.Count, 31).End(xlUp).Row 64 ' Last_Row = Last_Row + 1 65 66 End If 67 68 Next 69 70 objIE.Quit 71 Set objIE = Nothing 72 73 74End Sub

あと 参照設定を忘れずに 行って下さい

投稿2020/03/14 11:31

編集2020/03/14 11:51
Reach

総合スコア735

__Me__

2020/03/14 12:04

回答ありがとうございます! 早速試してみたところ、エラー等は出ませんが、1件も取得できずの状態です;; もしかするとTagが上手く取得できていないのかもしれません。試行錯誤してみます。
Reach

2020/03/14 12:10

上記コードでは シートへの転記は しておりません
guest

0

ベストアンサー

これで 全てのhrefが イミディエイトウインドウに 表示されると思います

VBA

1#If VBA7 Then 2 Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) 3#Else 4 Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) 5#End If 6 7 8 9 10Sub test() 11 12 13 Dim Driver As New Selenium.WebDriver 14 Driver.Start "chrome" 15 Driver.Get "検索対象URL" 16 17 For Each anchor In Driver.FindElementsByTag("a").Attribute("href") 18 19     Debug.Print anchor  20 '検索したURLに特定文字が入っていた場合のみSheet2に蓄積 21 If anchor Like "*/kensaku/*" Then 22 23 Debug.Print anchor 24 ' ws1.Range("AE4").Value = anchor 25 ' Last_Row = ws1.Cells(Rows.Count, 31).End(xlUp).Row 26 ' Last_Row = Last_Row + 1 27 28 End If 29 30 Next 31 32End Sub 33 34Sub test_2() 35 36 Dim objIE 37 Dim anchor As HTMLAnchorElement 38 39 40 Set objIE = CreateObject("InternetExplorer.Application") 41 objIE.Visible = True 42 objIE.navigate "検索対象URL" 43 44 Do While objIE.Busy = True Or objIE.readyState <> 4 45 DoEvents 46 Sleep 1 47 Loop 48 49 Do While objIE.document.readyState <> "complete" 50 DoEvents 51 Sleep 1 52 Loop 53 54 For Each anchor In objIE.document.Links 55 56 57     Debug.Print anchor.href 58 '検索したURLに特定文字が入っていた場合のみSheet2に蓄積 59 If anchor.href Like "*/kensaku/*" Then 60 61 Debug.Print anchor.href 62 ' ws1.Range("AE4").Value = anchor.href 63 ' Last_Row = ws1.Cells(Rows.Count, 31).End(xlUp).Row 64 ' Last_Row = Last_Row + 1 65 66 End If 67 68 Next 69 70 objIE.Quit 71 Set objIE = Nothing 72 73 74End Sub

投稿2020/03/14 12:09

編集2020/03/14 12:14
Reach

総合スコア735

__Me__

2020/03/17 06:23

回答ありがとうございます。 時間が作れず、実際にまだ試せておりませんが、 質問から数日経過しましたので、一旦回答を締め切らせていただきます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問