Excel VBA Web废弃IE.LocationUrl不起作用

时间:2018-07-31 21:14:48

标签: vba excel-vba web-scraping

我有一个VBA代码,可从需要登录凭据的网页中抓取数据。顺序如下:

  1. 打开网页(http://itpc.sdc.bsnl.co.in:7777/pls/apex/f?p=204:1
  2. 输入凭据,然后单击“登录” 3.登录后,网址更改为(http://itpc.sdc.bsnl.co.in:7777/pls/apex/ f?p = 124:783409349409959

请注意后面网址的最后一部分。它有一个随机数,在整个会话期间是恒定的。

我需要此数字或url进行进一步处理,因此登录后使用IE.LocationUrl,并将其保存在字符串中以备将来使用。

该代码在IE6上可以正常工作,但在IE的较新版本中,IE.LocationUrl属性不会获取POST LOGIN URL,而是显示基本的URL,即http://itpc.sdc.bsnl.co.in:7777/pls/apex/f?p=204:1

我不知道,我想念的是什么?请帮助这方面。 我已经附上了代码。

Sub scrape()
Dim ie As Object
Dim baseurl As String

Set ie = CreateObject("internetexplorer.application")

With ie
.Navigate "http://itpc.sdc.bsnl.co.in:7777/pls/apex/f?p=204:1"
.Visible = True
End With

Do While ie.Busy
DoEvents
Loop

ie.document.getElementbyId("P101_USERNAME").Value = "b200800935"
ie.document.getElementbyId("P101_PASSWORD").Value = "xxxxxxxx"

Do While ie.Busy
DoEvents
Loop

For Each l In ie.document.getElementsbyTagName("a")
If l.className = "t20Button" Then
l.Click
Exit For
End If
Next

Do While ie.Busy
DoEvents
Loop

'baseurl = Replace(ie.LocationUrl, "204", "124")
MsgBox ie.LocationUrl
'MsgBox Replace(ie.LocationUrl, "204", "124") & "::NO::HOME_APP,HOME_PAGE:204,1"

'ie.Navigate Replace(ie.LocationUrl, "204", "124") & "::NO::HOME_APP,HOME_PAGE:204,1"
'ie.Navigate "http://www.google.co.in"

'Do While ie.Busy
'DoEvents
'Loop
'
'ie.document.getElementbyId("PHONE_NO").Value = "04565-282200"
'ie.document.getElementbyId("P1_GO").Click
'
'Do While ie.Busy
'DoEvents
'Loop
'
'For Each l In ie.document.getElementsbyTagName("a")
'If l.innerText = "04565-282200" Then
'l.Click
'Exit For
'End If
'Next
'
'Do While ie.Busy
'DoEvents
'Loop
'
''ie.Quit
''Set ie = Nothing
End Sub

请注意我通过MsgBox检查登录后网址的以下行。它不会在末尾显示该唯一编号,但会显示登录前的实际网址。但是,该网页已登录,我可以手动访问该页面

For Each l In ie.document.getElementsbyTagName("a")
If l.className = "t20Button" Then
l.Click
Exit For
End If
Next

Do While ie.Busy
DoEvents
Loop


MsgBox ie.LocationUrl

同样,这在使用IE6的旧计算机上也可以正常使用,但不适用于较新的版本。 (我正在Windows 10 / IE 11中尝试)。 只有使用POST-LOGIN URL,我才能访问更多数据。 请帮忙解决。

0 个答案:

没有答案