【发布时间】:2019-01-11 16:54:36
【问题描述】:
我能够创建我的 vba 代码以登录到受密码保护的网站,但现在我被困在如何能够自动点击到我需要提取数据的位置。我无法共享该网站,但这是我尝试单击的 html 行。这是一个“报告”按钮,但我不能
这是我要点击按钮的html代码
<a href="gso_list_etrader_reports?vsCurrUser=2753"
class="menuitem">Reports</a>
这是网站的代码和登录名/密码和点击登录,到目前为止工作正常,下一步是点击报告并通过 Excel 中的网络查询提取数据。任何帮助是极大的赞赏。谢谢!
Dim HMTLDoc As HTMLDocument
Dim MyBrowser As InternetExplorer
Sub daily()
'
' daily Macro
'
Dim MyHTML_Element As IHTMLElement
Dim MYURL As String
On Error GoTo Err_Clear
' website
MYURL = ""
Set MyBrowser = New InternetExplorer
MyBrowser.Silent = True
MyBrowser.navigate MYURL
MyBrowser.Visible = True
Do
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = MyBrowser.document
' user login and password
HTMLDoc.all.user_login.Value = ***
HTMLDoc.all.user_password.Value = ***
For Each MyHTML_Element In HTMLDoc.getElementsbyTagName("input")
'click submit to login
If MyHTML_Element.Type = "submit" Then MyHTML_Element.Click: Exit For
Next
'gives debug error*** If MyHTML_Element.Type = "Reports" Then MyHTML_Element.Click: Exit For
Next
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
End Sub
请求我尝试点击的网站的 html,我希望宏点击报告按钮。
交易者主页 | 交易 | 报告
新代码在我按 F5 时不起作用,但在我通过代码按 F8 时会起作用:
将 HMTLDoc 调暗为 HTMLDocument 将 MyBrowser 调暗为 InternetExplorer 子 Delmarva_daily() ' ' Delmarva_daily 宏 '
将 MyHTML_Element 调暗为 IHTMLElement 将 MYURL 调暗为字符串 On Error GoTo Err_Clear
' website
MYURL = ***
Set MyBrowser = New InternetExplorer
MyBrowser.Silent = True
MyBrowser.navigate MYURL
MyBrowser.Visible = True
Do
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = MyBrowser.document
' user login and password
HTMLDoc.all.user_login.Value = ***
HTMLDoc.all.user_password.Value = ***
' click submit
For Each MyHTML_Element In HTMLDoc.getElementsbyTagName("input")
If MyHTML_Element.Type = "submit" Then MyHTML_Element.Click: Exit For
Next
' click reports
HTMLDoc.getElementsByClassName("menuitem")(1).Click
While MyBrowser.Busy Or MyBrowser.readyState < 4: DoEvents: Wend
'click Billing Analysis Report (Industrial)
HTMLDoc.getElementsByClassName("firstlink")(0).Click
While MyBrowser.Busy Or MyBrowser.readyState < 4: DoEvents: Wend
For Each MyHTML_Element In HTMLDoc.getElementsbyTagName("input")
If MyHTML_Element.Type = "submit" Then MyHTML_Element.Click: Exit For
Next
Err_Clear: 如果 Err 0 那么 错误清除 继续下一步 结束如果
结束子
【问题讨论】:
-
您有两个
Next,只有一个For Each。此外,那些单线If可能没有达到您的预期。 -
@Qharr 当字符限制也不允许我时,我应该如何发布 html?
-
@Qharr 我收到一条错误消息“您的帖子似乎包含未正确格式化为代码的代码。请使用代码工具栏按钮或 ctrl +k 键盘快捷键将所有代码缩进 4 个空格. ? 当我复制和粘贴 HTML 时,我不确定在这里做什么
-
imgur.com/a/QGVIdeJ 这是html代码,我正在尝试点击“报告”按钮
标签: vba excel web-scraping