【发布时间】:2018-04-28 02:40:23
【问题描述】:
我已经在互联网上进行了大量搜索以找到我的问题的答案,尽管它无济于事。我对 VBA Webscraping 相当陌生,所以如果我的问题相当简单,我深表歉意。话虽如此,让我解释一下:
我目前正在尝试从我公司的内部网站上抓取信息。使用 HTML id 和类名,我能够引用所需的搜索栏。虽然,一旦脚本单击网页上的搜索按钮,就会打开一个新选项卡。此后,我的脚本的其余部分继续引用原始选项卡,而不是我需要的信息源自的新选项卡。
我尝试使用 innerText 来查看是否可以直接从 HTML 中提取 url,尽管它似乎并不位于 HTML 中。此外,我无法创建另一个“ie”来指向新的 url,因为新选项卡的 url 是动态的并且基于您的搜索。因此,我认为我离开的唯一可能性是切换标签,但我找不到任何关于如何做到这一点的信息。
如果有人能解决这个难题,我知道这将是 StackOverflow 的编码之神。
Option Explicit
Sub Atlas_Search()
Dim SearchString As String
SearchString = Range("A1")
Dim ie As Object
Dim ie2 As Object
Dim form As Object
Dim form2 As Object
Dim form3 As Object
Dim button As Variant
Dim var1 As Object
Set ie = New InternetExplorerMedium
With ie
ie.Visible = True
ie.Navigate
"www.google.com"
With CreateObject("Shell.Application").Windows
Set ie = .Item(.Count - 1)
End With
End With
ie.document.getelementsbytagname("input")(10).Value = SearchString
Set form = ie.document.getelementbyid("MainContent_btnSearchFullText")
form.Click
Set form2 =
ie.document.getelementbyid("MainContent_rptrSearchResults_lnkApplicationid_0")
form2.Click
Set form3 = ie2.document.getelementsbyclassname("nav2link")(9)
form3.Click
End Sub
【问题讨论】:
-
您是否尝试过
Shell.Application.Windows并检查 URL 以找到您正在寻找的窗口?这似乎比假设固定索引更安全。 -
意思是输入“您是否尝试过循环 Shell.Application.Windows 并检查 URL”
标签: vba excel internet-explorer web-scraping tabs