質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

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

Q&A

解決済

4回答

1646閲覧

ExcelのVBAによるリンクのクリックについて

dainamo22

総合スコア3

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

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

0グッド

0クリップ

投稿2020/07/01 02:03

前提・実現したいこと

いつもお世話になります。
ExcelのVBAにてwebページをスクレイピングし、データを取得したいのですが、
取得したいデータのリンクを一覧表示させるまではできたのですが、
そのリンクをクリックするプログラムを作成するところで悩んでいます。

悩みどころ→ 該当のリンクに特定のIDやtagが無く、指定してやることができない。

何かヒントあればご教示よろしくお願いいたします。

発生している問題・エラーメッセージ

特に今のところエラーメッセージはありません。

該当のソースコード

試したこと

getElementByIdやgetElementsBytagを使って指定してやりたかったのですが、特定のIDやtagが無く、できないようです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

該当のサイトURLは、
http://www.i-ppi.jp/IPPI/SearchServices/Web/Gyomu/Keika/Search.aspx
です。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

スクレイピングの自動化ツールなら、Octoparseを自薦します。
WEBサイトを入力して、抽出したいデータをクリックすると、データを取得できます。

投稿2020/07/03 04:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ここまでしか できませんでしたが‥‥

VBA

1Sub test() 2 3 Dim URL 4 Dim objIE As InternetExplorer 5 6 Set objIE = CreateObject("Internetexplorer.Application") 7 8 objIE.Visible = True 9 URL = "http://www.i-ppi.jp/IPPI/SearchServices/Web/Gyomu/Keika/Search.aspx" 10 11 objIE.navigate URL 12 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 13 DoEvents 14 Loop 15 16 objIE.document.getElementById("btnSearch").Click 17 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 18 DoEvents 19 Loop 20 Application.Wait Now() + TimeValue("00:00:02") 21 22 Set table_tag = objIE.document.getElementById("dgrSearchList") 23 Set tr = table_tag.getElementsByTagName("tbody")(0).getElementsByTagName("tr") 24 25 For idx = 1 To tr.Length - 1 26 27 28 Set table_tag = objIE.document.getElementById("dgrSearchList") 29 Set tr = table_tag.getElementsByTagName("tbody")(0).getElementsByTagName("tr") 30 31 tr(idx).getElementsByTagName("a")(0).Click 32 33 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 34 DoEvents 35 Loop 36 Application.Wait Now() + TimeValue("00:00:02") 37 38 objIE.navigate URL 39 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 40 DoEvents 41 Loop 42 43 objIE.document.getElementById("btnSearch").Click 44 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 45 DoEvents 46 Loop 47 Application.Wait Now() + TimeValue("00:00:02") 48 49 50 Next idx 51 52 53 54End Sub 55

投稿2020/07/04 01:45

Reach

総合スコア735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dainamo22

2020/07/05 08:48

ご回答いただきありがとうございます。 tableの参照の方法、とても参考になりました。 作業の進捗がみられずモヤモヤしていたなかで、道筋が見えてきました。 ありがとうございました。
guest

0

tag がないとおっしゃっていますが、リンクですよね?
であれば document.links で全部取得できませんか?

多分 href さえ持っていればそれで全部列挙できますよ。

投稿2020/07/01 13:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dainamo22

2020/07/01 23:18

ご回答ありがとうございます。 リンクを取得してみましたが、href="javascript:__doPostBack('dgrSearchList','$1')"となっており、javascriptで出力されているようです。私には難しいため、他の方法も考えたいと思います。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2020/07/02 00:05

であれば、下記コードでは如何でしょう。 parentWindow.setTimeout "javascript:__doPostBack('dgrSearchList','$1');", 10
guest

0

Webサイト上で、どのタグ(リンク、ボタン)がクリック対象であるかは明らかなのでしょうか?
そのタグを特定するIDがないのなら、対象タグの条件を組み合わせて対象タグを特定するしかないでしょう。
例えば、
・InnerTextの内容
・タグの種類
・ClassName等、特徴のある属性値

投稿2020/07/01 08:33

kenshirou

総合スコア772

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dainamo22

2020/07/01 23:20

ご回答ありがとうございます。 リンクなのですが、href="javascript:__doPostBack('dgrSearchList','$0')"と書かれており、javascriptが関係しているようなので、私には解析が難しく、別の方法も考えたいと思います。 ありがとうございました。
kenshirou

2020/07/02 00:08 編集

対象ページ内の指定の<a>タグをクリックしたいけど、その<a>タグを特定するにはどうすれば良いか、という質問だと思っていたのですが、対象ページの<a>タグのリンク先を知りたいということなのでしょうか? 私の回答は、前者の<a>タグ(クリックしたいタグ)の特定方法のアドバイスなので、目的によっては役に立たない情報となります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問