VBA HTML元素到Excel
我正在编写一个使用VBA Excel导航到网站并将一些值复制到Excel的代码 我可以打开网站并导航,但我无法将“沉淀”值保存在excel表格中VBA HTML元素到Excel,excel,vba,web-scraping,Excel,Vba,Web Scraping,我正在编写一个使用VBA Excel导航到网站并将一些值复制到Excel的代码 我可以打开网站并导航,但我无法将“沉淀”值保存在excel表格中 Sub accuweather() Dim ie As InternetExplorer Dim pagePiece As Object Dim webpage As HTMLDocument Set ie = New InternetExplorer ie.Visible = True ie.navigate ("http://www.acc
Sub accuweather()
Dim ie As InternetExplorer
Dim pagePiece As Object
Dim webpage As HTMLDocument
Set ie = New InternetExplorer
ie.Visible = True
ie.navigate ("http://www.accuweather.com/en/pt/abadia/869773/daily-weather-forecast/869773?day=2")
Do While ie.readyState = 4: DoEvents: Loop
Do Until ie.readyState = 4: DoEvents: Loop
While ie.Busy
DoEvents
Wend
Set webpage = ie.document
Set mtbl = webpage.getElementsByTagName("details-card card panel details allow-wrap")
Set table_data = mtbl.getElementsByTagName("div")(1)
For itemNum = 1 To 240
For childNum = 0 To 5
Cells(itemNum, childNum + 1) = table_data.Item(itemNum).Children(childNum).innerText
Next childNum
Next itemNum
ie.Quit
Set ie = Nothing
End Sub
您使用的方法是
getElementsByTagName
,但该引用用于多值类。因此正确的方法应该是getElementsByClassName
但是,您不需要浏览器,因为内容是静态的,您可以使用更快的xmlhttp请求和单个(更健壮、更快速)类作为目标
这个
正在检索具有各种p标记子节点的两个父节点。两种情况下的第一个孩子
.Item(i).FirstChild
是降水信息
Option Explicit
Public Sub GetPrecipitationValues()
Dim html As MSHTML.HTMLDocument, i As Long
Set html = New MSHTML.HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.accuweather.com/en/pt/abadia/869773/daily-weather-forecast/869773?day=2", False
.setRequestHeader "User-Agent", "Mozilla/5.0"
.send
html.body.innerHTML = .responseText
End With
With html.querySelectorAll(".list")
For i = 0 To .Length - 1
Debug.Print .Item(i).FirstChild.innerText
Next
End With
End Sub
您使用的方法是
getElementsByTagName
,但该引用用于多值类。因此正确的方法应该是getElementsByClassName
但是,您不需要浏览器,因为内容是静态的,您可以使用更快的xmlhttp请求和单个(更健壮、更快速)类作为目标
这个
正在检索具有各种p标记子节点的两个父节点。两种情况下的第一个孩子
.Item(i).FirstChild
是降水信息
Option Explicit
Public Sub GetPrecipitationValues()
Dim html As MSHTML.HTMLDocument, i As Long
Set html = New MSHTML.HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.accuweather.com/en/pt/abadia/869773/daily-weather-forecast/869773?day=2", False
.setRequestHeader "User-Agent", "Mozilla/5.0"
.send
html.body.innerHTML = .responseText
End With
With html.querySelectorAll(".list")
For i = 0 To .Length - 1
Debug.Print .Item(i).FirstChild.innerText
Next
End With
End Sub
运行代码时会发生什么情况?这不是标记名详细信息卡片面板详细信息允许换行看起来像多值类运行代码时会发生什么情况?这不是标记名详细信息卡片面板详细信息允许换行看起来像多值类打印结果到即时窗口Ctrl+G,但很容易写入。谢谢QHarr。如何将这些结果打印到excel?Qharr抱歉,但我需要为每行URL(多个URL)添加一个循环。stackoverflow上有很多示例向您展示了如何执行此操作。我将分享一个链接到下面的一些,这样你可以有一个尝试在它第一。看看这些:我把这些问题贴在了网上。如果你能帮忙,我将不胜感激。又来了!我正在将结果打印到即时窗口Ctrl+G,但很容易写入SheetQharr。如何将这些结果打印到excel?Qharr抱歉,但我需要为每行URL(多个URL)添加一个循环。stackoverflow上有很多示例向您展示了如何执行此操作。我将分享一个链接到下面的一些,这样你可以有一个尝试在它第一。看看这些:我把这些问题贴在了网上。如果你能帮忙,我将不胜感激。又来了!