我需要一个VBA中的宏,它能够从包含在EXCEL单元格中的URL中提取所有HTML源代码,并在所有不同的Excel单元格中逐行放置。 我以前在网上搜索过不同的解决方案,但找不到合适的解决方案。
感谢您的帮助;)
修改 感谢库插入我还可以测试我以前在网上找到的另一个宏:
Sub Naviga()
Dim texto As String
Dim objIE As Object
Dim DestUrl As String
DestUrl = "http://www.google.it"
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False
objIE.Navigate2 DestUrl
Do
DoEvents
Loop Until objIE.ReadyState = READYSTATE_COMPLETE
Range("A" & 1).Value = objIE.document.body.innerHTML
End Sub
并且它有效,但不幸的是我希望链接是直接从excel中的单元格获取的,当行复制时,下一行,从下一个单元格开始,下面是单元格。 我该如何修改宏?
编辑2: 解决方案即将来临,我刚刚修复了代码,现在更加干净了:
Sub EstrSorgPag()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate Range("H1")
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Range("A" & 1).Value = IE.document.body.innerHTML
End Sub
但缺少宏应按单元格复制内容单元格的最后一部分(A1,A2,A3,A4 ......等等)
编辑3: 大家好,我写了这个简短的代码,从网页的源代码中提取所有链接:
Sub EstraiURLdaWeb()
Dim doc As HTMLDocument
Dim output As Object
Set IE = New InternetExplorer
IE.Visible = False
IE.navigate Range("L1")
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Set doc = IE.document
Set output = doc.getElementsByTagName("a")
i = 5
For Each link In output
Range("A" & i).Value = link
i = i + 1
Next
MsgBox "Fatto!"
End Sub
但我需要特别提取这个:
<li class="bubble"><span><a href="/soccer/finland/veikkausliiga/standings/YTtR3YWr/">Main</a></span></li>
我该怎么办?
答案 0 :(得分:1)
<a>
的InnerHTML或InnerText 如果您已经获得了所有<a>
标记元素,则可以循环遍历它们(您已经拥有它)并创建逻辑条件,如果每个特定元素都包含您要查找的关键字。
Set output = doc.getElementsByTagName("a")
For Each link In output
If link.InnerHTML = "Main" Then
Range("A" & i).Value2 = link
End If
Next
GetElement(s)
方法要获得更加狭窄的HTML元素集合,您可以组合多个GetElement(s)
方法。像这样:
您可以获得具有特定类别的所有HTML elemens:
Set BubbleCollection = doc.getElementsByClassName("bubble")
然后,您可以扫描此集合中的<a>
标记:
Set output = BubbleCollection.getElementsByTagName("a")
检查您有多少元素(可选择调试/优化搜索):
Debug.Print output.length