如何从新开通的网页上抓取数据?

时间:2017-04-12 19:11:51

标签: excel vba excel-vba excel-automation

在点击提交按钮

后,从正在打开的网页中抓取数据

填写点击提交后,在this website我填充文本框,显示占位符 #Tracking 并使用此值 148459 >它会打开另一个页面,其中包含详细信息...我想抓取该页面上的数据并使用VBA将其带入Excel。

我的猜测是提交按钮正在使用POST方法;我需要帮助来用POST方法抓取网页。

我已经解决了以下代码:

Dim IE    As New SHDocVw.InternetExplorer
Dim HTMLDoc     As MSHTML.HTMLDocument
Dim HTMLInput   As MSHTML.IHTMLElement
Dim HTMLButton  As MSHTML.IHTMLElement
Dim HTMLButtons As MSHTML.IHTMLElementCollection

Dim HTMLAs As MSHTML.IHTMLElementCollection
Dim HTMLA As MSHTML.IHTMLElement
Dim txt As String
Dim delStat As String

txt = ActiveCell.Value
IE.Visible = True
'IE.Navigate "http://206.50.6.194/WebtrakWT/shipinquiry/quicktrack.aspx"
IE.Navigate "http://206.50.6.194/WebtrakWT/shipinquiry/ShipInfo.aspx?OrderNo=393874&Back=QuickTrack&TrackType=HousebillNo&TrackNo=" & txt
Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop

Set HTMLDoc = IE.Document

'Set HTMLInput = HTMLDoc.getElementById("ddlTrackBy")
'HTMLInput.Value = "HousebillNo"
'Set HTMLInput = HTMLDoc.getElementById("txtInputNo")
'HTMLInput.Value = ActiveCell.Value
'Do While IE.ReadyState <> READYSTATE_COMPLETE
'    DoEvents
'    Loop
'Set HTMLButton = HTMLDoc.getElementById("btnSubmit")
'HTMLButton.Click

Do While IE.ReadyState <> READYSTATE_COMPLETE
    DoEvents
    Loop

Set HTMLAs = HTMLDoc.getElementsByTagName("span")

For Each HTMLA In HTMLAs
    Debug.Print HTMLA.getAttribute("id"), HTMLA.innerHTML
Next HTMLA

delStat = HTMLDoc.getElementById("lblStatus").innerHTML
Debug.Print delStat

If delStat = "DELIVERED" Then
ActiveCell.Offset(0, 5).Value = "Delivered"
Call screenShot
Else
ActiveCell.Offset(0, 5).Value = "Not Delivered"
End If

IE.Quit
Set IE = Nothing

0 个答案:

没有答案
相关问题