【发布时间】:2021-11-11 05:16:11
【问题描述】:
亲爱的 VBA 同事你好 :)
Sub login()
'test
Const URL$ = "https://kwm.kromi.de/cgi-bin/kwm?HTML=frontend/login.htm"
Dim UserName As String, Password As String, LoginData As Worksheet
Set LoginData = ThisWorkbook.Worksheets("Sheet1")
UserName = LoginData.Cells(1, "B").Value
Password = LoginData.Cells(2, "B").Value
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = False
.Navigate URL
ieBusy IE
.Visible = True
Dim oLogin As Object, oPassword As Object
Set oLogin = .document.getElementsByName("VS_LOGIN")(0)
Set oPassword = .document.getElementsByName("VS_PASSWORD")(0)
oLogin.Value = UserName
oPassword.Value = Password
.document.forms(0).submit
ieBusy IE
Stop
'.document.getElementsByTagName("a")(2).href
'.document.getElementsByClassName("link3").Click
.Navigate2 ""
ieBusy IE
Stop
End With
'''
End Sub
Sub ieBusy(IE As Object)
Do While IE.Busy Or IE.readyState < 4
DoEvents
Loop
End Sub
第一个任务是工作,宏登录网站。我需要更深入地点击一些东西,但网络结构对我的小脑袋来说太多了我正在网站上寻找一些例子,但没有任何效果。我在下面显示了网站的代码。我需要点击按钮“statystyka”。
/html/body/div[1]/div[1]/a[2] - Xpath 地址
[链接图片]https://ibb.co/2Pgx2tn
请给我一些帮助:)
编辑:
我尝试使用这样的东西:
'.document.getElementsByTagName("a")(2).href 但这不是很好的思考方式
【问题讨论】:
-
nothing work是什么意思?您是否单击它但没有任何反应或有什么错误? -
看起来这个链接实际上运行了一个 Javascript,所以谷歌在
ExecScript上了解如何使用 IE 执行 Javascript。 -
@Raymond Wu ,对于我来说,问题是如何导航这种文档结构,它与 html 结构和 html 的依赖关系(doc -> head ->div 等)有关。我不知道如何以核心方式选择行(我认为有 html 和 vba 经验的人知道如何做到这一点):
<a href="" onclick="OneInOne('https://kwm.kromi.de:443/cgi-bin/kwm?HTML=frontend/statistic/stat_current.htm&amp;ID=C466409C6997DADCE06C38B36731BA92',6); return false;">Statystyka</a>我试过这样的事情'.document.getElementsByTagName("a")(2).href -
我创建了一个简单的示例来测试 QHarr 的答案,并且效果很好。但是,我们无法访问您提供的页面,因此恐怕您无法重现您的问题。
-
@Raymond Wu 我正在等待 QHarr 的回复,也许他有一些想法或其他方式可以尝试。
标签: html vba internet-explorer web-scraping