我正在从事一项网络抓取工程,该工程将从旅游网站上刮取票务信息。网页抓取 - VBA搜索参数无法正常工作
我目前遇到一个问题,即在我的VBA代码中定义的搜索参数以及稍后输入到要执行的网站中的搜索参数不起作用。下面提供了编写的代码。为了提供一些背景知识,我正在从我的Excel工作簿(例如北京(北京))往来目的地中读取信息,并以网站预期的输入格式(MM-DD-YYYY)定义旅行日期。但是,在运行时,该网站似乎没有识别出这些参数,并且指示我到页面上显示“站点正在维护”。奇怪的是,当我手动输入参数时,站点会识别它并提供票务信息。
难道我也许失去了一些东西?我一定要 “DepartureCity”, “ArrivalCity” 和 “DepartDate” 之外的其他更新值?
我还注意到,当我循环浏览多个城市时,网站会搜索与之前定义的参数相同的参数(即,如果搜索上海 - >北京,那么它会产生天津 - >北京,这是我之前搜索的)。 有没有办法通过VBA自动删除搜索历史/缓存?
' save from and to destinations under a defined string
sFrom = Range("C3").Value
sTo = Range("C4").Value
' "i" to track the # of days out as defined by the user
For i = 0 To cntDays
dtRange = Date + i
' establish date to pull train ticketing information on
If Len(Day(dtRange)) = 1 Then
sDay = "0" & Day(dtRange)
Else:
sDay = Day(dtRange)
End If
If Len(Month(dtRange)) = 1 Then
sMonth = "0" & Month(dtRange)
Else:
sMonth = Month(dtRange)
End If
sDate = sMonth & "-" & sDay & "-" & Year(dtRange)
' instantiate the oIE object
Set oIE = CreateObject("InternetExplorer.Application")
' open Ctrip travel portal
sURL = "http://english.ctrip.com/trains/#ctm_ref=nb_tn_top"
With oIE
.navigate sURL
.Visible = True
Do Until (.readyState = 4 And Not .Busy)
DoEvents
Loop
' search for particular entry
.document.getElementsByName("DepartureCity")(0).Value = sFrom
.document.getElementsByName("ArrivalCity")(0).Value = sTo
.document.getElementsByName("DepartDate")(0).Value = sDate
MsgBox sFrom
MsgBox sTo
MsgBox sDate
Set ElementCol = .document.getElementsByTagName("button")
For Each btnInput In ElementCol
If btnInput.innerText = "Search" Then
btnInput.Click
Exit For
End If
Next btnInput
' ensure page has been fully loaded
Do Until (.readyState = 4 And Not .Busy)
DoEvents
Loop
看着所提供的的来源,也有隐藏的输入框正下方的搜索按钮。尝试使用这些。来源...'' – WhiteHat
所以不是'.document。getElementsByName(“DepartureCity”)(0).Value = sFrom'您推荐我使用'.document.getElementsByName(“DepartureCityPinyin”)(0).Value = sFrom'而不是? – Jeff
是的,或尝试设置两个... – WhiteHat