Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA仅从HTML Web抓取主表。不是整页_Html_Excel_Vba_Web_Web Scraping - Fatal编程技术网

VBA仅从HTML Web抓取主表。不是整页

VBA仅从HTML Web抓取主表。不是整页,html,excel,vba,web,web-scraping,Html,Excel,Vba,Web,Web Scraping,我已经通过使用excel复制和粘贴,而不是正确的网页抓取的工作。我只想从主表中获取数据,但我想从响应中获取所有信息。我怎么才能拿到主桌呢?我试图使用…“Set HTMLTables=HTMLDoc.getElementsByTagName(“tbody”).Item(“3”)” 子IE下拉菜单选择并单击() Dim ie作为新的SHDocVw.InternetExplorer 将htmlDoc设置为新的MSHTML.HTMLDocument 将HTMLTables设置为MSHTML.IHTMLE

我已经通过使用excel复制和粘贴,而不是正确的网页抓取的工作。我只想从主表中获取数据,但我想从响应中获取所有信息。我怎么才能拿到主桌呢?我试图使用…“Set HTMLTables=HTMLDoc.getElementsByTagName(“tbody”).Item(“3”)”

子IE下拉菜单选择并单击()
Dim ie作为新的SHDocVw.InternetExplorer
将htmlDoc设置为新的MSHTML.HTMLDocument
将HTMLTables设置为MSHTML.IHTMLElementCollection
将HTMLTable设置为MSHTML.IHTMLElement
将表分区设置为MSHTML.IHTMLElement
将表格行调整为MSHTML.IHTMLElement
将表格单元格设置为MSHTML.IHTMLElement
将行计数设置为整数
Dim ColCount为整数
将HTMLa变暗为MSHTML.IHTMLElement标记名(“a”)
Dim HTMLas作为MSHTML.IHTMLElementCollection标记名(“As”)
将行文本设置为字符串
将时间帧设置为整数
将时间框架2设置为字符串
将URL设置为字符串
时间范围2=1
URL=”https://forecast.weather.gov/MapClick.php?w0=t&w3=sfcwind&w3u=1&w4=sky&w5=pop&w6=rh&w7=rain&AheadHour=0&Submit=Submit&FcstType=digital&textField1=33.6414&textField2=-116.2591&site=all&unit=0&dd=&bw=”
可见=真实
浏览网址
在ie.readyState readyState\u完成时执行此操作
环
设置htmlDoc=ie.document
时间范围=工作表(“选择器”).范围(“B1”).值
时间范围2=CStr(时间范围)
'htmlDoc.querySelector(“[name=AheadHour]option[value='8']”)。Selected=True
htmlDoc.querySelector(“[name=AheadHour]选项[value='”&TimeFrame2&'”)。Selected=True
Application.Wait(现在+时间值(“0:00:1”))
htmlDoc.getElementById(“提交”)。单击
Application.Wait(现在+时间值(“0:00:2”))
工作表(“表1”)。激活
ActiveSheet.Cells.NumberFormat=“常规”
设置HTMLTables=htmlDoc.getElementsByTagName(“表”)
'Set HTMLTables=HTMLDoc.getElementsByTagName(“tbody”).Item(“3”)
对于HTMLTables中的每个HTMLTable
'Debug.Print HTMLTable.Id,HTMLTable.className;vbCr
对于HTMLTable.Children中的每个表节
'Debug.Print,TableSection.tagName
'对于TableRow.tagName(“tr”)中的每个TableRow
对于TableSection.Children中的每个TableRow
RowText=“”
'对于TableCell.tagName(“td”)中的每个TableCell
对于TableRow.Children中的每个TableCell
ColCount=ColCount+1:单元格(RowCount+1,ColCount)。NumberFormat=“@”:单元格(RowCount+1,ColCount)=RowText&vbTab&TableCell.innerText
'RowText=RowText&vbTab&TableCell.innerText
下一个表细胞
ColCount=0
RowCount=RowCount+1
调试。打印,行文本
下一张桌子行
下一个表节
下一个HTMLTable
端接头

显示的代码适用于所有表。请使用以下两个专门针对该表的伪类选择器之一进行尝试:

ie.document.querySelector("body > table:nth-child(6)") 
或者将css更改为

body > table:nth-of-type(6)

我使用java xhr在浏览器中进行了测试,因此您需要验证返回html的索引。

您显示的代码适用于所有表。请尝试使用以下两个专门针对该表的伪类选择器之一:

ie.document.querySelector("body > table:nth-child(6)") 
或者将css更改为

body > table:nth-of-type(6)

我使用java xhr在浏览器中进行了测试,因此您需要验证返回html的索引。

提供测试值和预期输出非常有用。您显示的代码适用于您应该更新的所有表,以显示再现问题的确切示例。提供测试值和预期输出非常有用。您正在使用的代码是以下是您应该更新的所有表格,以显示重现问题的确切示例。