Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


495 / 13645 ツリー ←次へ | 前へ→

【80072】iframe内の情報を取得 こうせつ 18/7/21(土) 11:44 質問[未読]
【80073】Re:iframe内の情報を取得 γ 18/7/21(土) 13:59 発言[未読]
【80074】Re:iframe内の情報を取得 こうせつ 18/7/21(土) 17:32 お礼[未読]
【80075】Re:iframe内の情報を取得 γ 18/7/21(土) 19:39 発言[未読]
【80076】Re:iframe内の情報を取得 こうせつ 18/7/22(日) 22:39 お礼[未読]

【80072】iframe内の情報を取得
質問  こうせつ  - 18/7/21(土) 11:44 -

引用なし
パスワード
   はじめて投稿をします。
介護事業所検索のiframe内に表示される情報を取得し、
Excelに貼付けをしていきたいと考えています。

www。kaigokensaku.mhlw.go.jp/27/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=27&JigyosyoCd=276&p_sort_name=24


質問は以下2点です。
1.表示数の変更方法
ブラウザからですと、p_count内のValue値を直接書き換えることで、
表示される項目数を変更することが出来ました。
同じようにVBAでも可能でしょうか。
またはURLで制御できるでしょうか。
(p_sort_name欄はValue値をURLに記載することでselectedIndexの初期値を変えることができましたが、p_countは上手くいかず)

2.iframe内の情報を取得することが出来ません。
いくつかのサイトを参考に書いた(コピペした)のですが、
取得したいサイトへ落とし込みが出来ていません。


Sub test()

  Dim a As Object
  Dim 貼付 As Worksheet
  Dim objIE As InternetExplorer
  Dim objITEM As Object
  Set objIE = CreateObject("Internetexplorer.Application")

  objIE.Visible = True
  objIE.navigate " kaigokensaku.mhlw.go.jp/27/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=27&JigyosyoCd=276&p_sort_name=24"

  Do While objIE.Busy = True Or objIE.readyState < 4
    DoEvents '処理待ち
  Loop
  
  Application.Wait Now + TimeValue("0:00:03") 'HTMLの読み込み待ち
  
  
  Dim objFRAME As Object
  Set objFRAME = objIE.document.frames 
  MsgBox objFRAME(0).document.Title
'↑↑↑まずここで取得出来ていないので、何かが間違っている
  

'名前を取得して貼り付けたい  
  For Each objITEM In objFRAME.getElementsByClassName("listSubDataTable")
    貼付.Cells(a, 1) = Replace(objITEM.innerText, vbCrLf, "")
    a = a + 1
  Next
  
End Sub


不明点あれば、ご指摘ください。
よろしくお願いします。

【80073】Re:iframe内の情報を取得
発言  γ  - 18/7/21(土) 13:59 -

引用なし
パスワード
   >Dim objFRAME As Object
>Set objFRAME = objIE.document.frames 
>MsgBox objFRAME(0).document.Title
> '↑↑↑まずここで取得出来ていないので、何かが間違っている
ローカルウインドウで、
objFRAMEのプロパティ(Onmessageとなかにか)を見ると、
アクセスが拒否されました、と表示されます。
サーバー側でスクレイピングへの対策が行われていると思います。

1.の質問(ページ内表示上限)に関連しますが、
Webクエリーを実行すると、表示数の変更ボックスが現れます。
50に変更して実行しますと、これも拒否されます。
administratorと相談せよ、IDはなにがし、といった表示がされます。

総体に、Webスクレイピングへの対策が採られているようですから、
障壁は厚いと思われます。
従って、単純にgetメソッドで情報が取得できるなどということは
期待できないと思います。

【80074】Re:iframe内の情報を取得
お礼  こうせつ  - 18/7/21(土) 17:32 -

引用なし
パスワード
   γ さん
ご検討ありがとうございます。
難しい、ということは良く分かりました。
一般的なやり方では弾かれてしまうのですね。

後だしではありますが、参考記事は無いものかと探していたところ、
www.excel.studio-kazu.jp/kw/20150419215231.html
がありました。
これは参考になるでしょうか(私はどこをアレンジすれば……というレベルです)

【80075】Re:iframe内の情報を取得
発言  γ  - 18/7/21(土) 19:39 -

引用なし
パスワード
   そこにある記事が今は消えていますが、
下記のarchiveに残っていました。参考になるかは私には不明。

web.archive.org/web/20150425032036/HTTP://www.moug.net/faq/viewtopic.php?t=71836
途中の4文字を半角小文字に修正してください。

【80076】Re:iframe内の情報を取得
お礼  こうせつ  - 18/7/22(日) 22:39 -

引用なし
パスワード
   γ さん
ありがとうございます。

きっと参考になる(答えレベルなのかも)のでしょうが、
それを読み解く力が私にはありませんでした。

495 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free