http://hoge.com/index.php //遷移前
↓
submit
↓
http://hoge.com/index.php //遷移後 ⇐このページをスクレイピングしたい
最初VBAでスクレイピングしたのですが、遷移前のページしか取得できませんでした。
ちなみに、こんなかんじです。(参考にしたサイト→https://www.vba-ie.net/ie/subroutine2.html)
VBA
1Sub test() 2 3 Dim objIE As InternetExplorer 4 5 '指定URLを表示するサブルーチン「ieView」 6 Call ieView(objIE, "http://hoge.com/index.php") 7 8 'Webページ完全読込待機処理サブルーチン「ieCheck」 9 Call ieCheck(objIE) 10 11 'submitする 12 objIE.document.getElementsByTagName("submit")(0).Click 13 14 Call ieCheck(objIE) 15 16 ~ここからスクレイピング~ 17 18End Sub 19------------------------------------------------------------------ 20#If VBA7 Then 21 Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) 22#Else 23 Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) 24#End If 25------------------------------------------------------------------ 26Sub ieCheck(objIE As InternetExplorer) 27 28 Dim timeOut As Date 29 30 '完全にページが表示されるまで待機する 31 timeOut = Now + TimeSerial(0, 0, 20) 32 33 Do While objIE.Busy = True Or objIE.ReadyState <> 4 34 DoEvents 35 Sleep 1 36 If Now > timeOut Then 37 objIE.Refresh 38 timeOut = Now + TimeSerial(0, 0, 20) 39 End If 40 Loop 41 42 timeOut = Now + TimeSerial(0, 0, 20) 43 44 Do While objIE.document.ReadyState <> "complete" 45 DoEvents 46 Sleep 1 47 If Now > timeOut Then 48 objIE.Refresh 49 timeOut = Now + TimeSerial(0, 0, 20) 50 End If 51 Loop 52 53End Sub 54------------------------------------------------------------------ 55Sub ieView(objIE As InternetExplorer, _ 56 urlName As String, _ 57 Optional viewFlg As Boolean = True) 58 59 'IE(InternetExplorer)のオブジェクトを作成する 60 Set objIE = CreateObject("InternetExplorer.Application") 61 62 'IE(InternetExplorer)を表示・非表示 63 objIE.Visible = viewFlg 64 65 '指定したURLのページを表示する 66 objIE.Navigate urlName 67 68 'IE(InternetExplorer)が完全表示されるまで待機 69 Call ieCheck(objIE) 70 71End Sub 72Sub sample() 73 74 Dim objIE As InternetExplorer 75 Dim url As String 76 url = Range("A1").Value 77 Call ieView(objIE, url) 78 Call ieCheck(objIE) 79 objIE.document.getElementsByName("method_free")(0).Click 80 81 Sleep 1000 82 Call ieCheck(objIE) 83 84 'MsgBox objIE.document.getElementsByClassName("rightcol")(0).Click 85 Debug.Print objIE.document.body.outerHTML 86 87End Sub
一応ほかの言語でも試してみたいのですが、どの言語でどのようにすればいいかも教えてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。