我正在尝试通过VBA登录此网页:
Sub scraping()
Dim IE As Object
Dim UserName As String
Dim Password As String
Dim LogonForm As HTMLFormElement
Dim SubmitInput As HTMLInputElement
UserName = "XXXXXXXXx"
Password = "XXXXXXXXX"
With Session
Set IE = New InternetExplorer
With IE
.Navigate "https://www.unicajabanco.es/PortalServlet?pag=1110902071492&menu0=particulares"
.Visible = True
Do Until (.READYSTATE = 4 And Not .Busy)
DoEvents
Loop
Set LogonForm = .document.datos
With LogonForm
.user.Value = UserName
.clave.Focus
.clave.Value = Password
For Each SubmitInput In .getElementsByTagName("INPUT")
If InStr(SubmitInput.getAttribute("alt"), "de Banca") Then
SubmitInput.Click
Exit For
End If
Next
End With
End With
End With
End Sub
但id="clave"
的输入附有虚拟键盘以输入密码。
我尝试使用clave
填充.clave.Value = Password
输入,但是当我点击ENTRAR
按钮时,无法识别密码。如果我在ENTRAR
输入时点击了clave
按钮而没有任何值。
我也试过这段代码,但它不起作用:
For Each SubmitInput In .getElementsByClassName("tecla")
If InStr(SubmitInput.getAttribute("onclick"), "W") Then
SubmitInput.Click
Exit For
End If
Next
和
For Each SubmitInput In .getElementsByTagName("div")
If InStr(SubmitInput.getAttribute("onclick"), "W") Then
SubmitInput.Click
Exit For
End If
Next
如果我能帮助您输入密码并提交表格,我将不胜感激。
答案 0 :(得分:1)
这是银行网站,它具有额外的安全功能,可以保护用户免受黑客攻击等。
如果您检查页面源,则通过脚本而不是实际的html将页面写入页面来创建一些html - 您的clave
输入就是一个示例。
document.write('<input id="clave" class="campo" name="clave" maxlength="8" onBlur="blurVirtualKeyBoard(); if (this.value==\'\') datos.tipoTeclado.value=\'\';" onClick="if (this.value==\'\') datos.tipoTeclado.value=\'\';" onFocus="focusVirtualKeyBoard(this,\'acceso-usuario\',200,100);" readonly type="password"/>');
请注意,<input>
具有readonly
属性。因此,尝试直接设置<input>
的值将失败,除非您尝试删除该属性。
有些人或许多人会认为尝试将此属性删除为可疑行为,因为网页抓取或自动化可能在法律上可疑 - 特别是对于银行网站;)
如果您进一步检查页面源,您会看到点击<input>
会启动一个名为acceso-usuario
的脚本。您可以尝试按照该代码执行的操作作为下一步。