【发布时间】:2020-01-09 08:44:05
【问题描述】:
披露:我只是一名办公室文员,对 VBA 和 HTML 非常陌生。希望你对我有耐心。我非常感谢任何指导和帮助。希望我的格式正确。
昨天我花了一整天时间尝试从 Intranet 网页导入信息以自动复制和粘贴路由。从长远来看,这确实会有所帮助。
由于 power-query 似乎没有看到我需要的表,我认为唯一的选择是使用 VBA。 MsServer 工具完美抓取页面,但令我失望的是页面出现错误,因为它需要先授权才能访问它。
我认为使用 IE 应该可以工作,因为 IE 在 cookie 中有登录信息。
到这里为止。
Sub ExtractFromEndeca() Dim ie As InternetExplorer Dim html As
IHTMLDocument Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = False
ie.Navigate "intranet address"
While ie.Busy
DoEvents Wend While ie.ReadyState < 4
DoEvents Wend
Set Doc = CreateObject("htmlfile")
Set Doc = ie.document
Set Data = Doc.getElementById("findSimilarOptions2")
Sheet1.Cells(1, 1) = Data
ie.Quit Set ie = Nothing
ThisWorkbook.Sheets(1).Cells(1, 1) = Data
End Sub
结果是单元格 A1 中的 [object],仅此而已,我无法理解我是否已通过登录。
这是我要抓取的页面片段。理想情况下,这些数据将作为表格输出。
<td valign="top" id="findSimilarOptions2">
<div class="subtitle">Part Attributes</div>
<input type="checkbox" id="n_200012" value="-19192896" NAME="n_200012">
<b>
ASSY TYPE</b> >
Component<br>
<input type="checkbox" id="n_200013" value="-18148519" NAME="n_200013">
<b>
PARAMETER I NEED(1)</b> >
VALUE I NEED(1)<br>
<input type="checkbox" id="n_200006" value="-20823731" NAME="n_200006">
<b>
PARAMETER I NEED(2)</b> >
VALUE I NEED(2)<br>
<input type="checkbox" id="n_200006" value="-20823618" NAME="n_200006">
<b>
PARAMETER I NEED(3)</b> >
VALUE I NEED(3)<br>
<input type="checkbox" id="n_200006" value="-20823586" NAME="n_200006">
<b>
PARAMETER I NEED(4)</b> >
VALUE I NEED(4)<br>
...
【问题讨论】:
-
欢迎来到 SO。如果您使用
Sheet1.Cells(1, 1) = Data.Value而不是Sheet1.Cells(1, 1) = Data,会发生什么? -
啊,我想我知道为什么了。
<td valign="top" id="findSimilarOptions2">没有任何值,因此无法将其返回到您的 Excel 文件中。但是,您的 HTML 代码的其他元素应该可以工作,例如<input type="checkbox" id="n_200012" value="-19192896" NAME="n_200012">。尝试测试Set Data = Doc.getElementById("n_200012"),然后测试Sheet1.Cells(1, 1) = Data.Value。 -
@JustynaMK 是的,它获取值 -19192896!谢谢你。但这不是我需要的。我需要 id "findSimilarOptions2" 的内部文本
-
@JustynaMK UPD:我刚刚测试过,它使用 data.innerText 抓取它!我太兴奋了,我终于到了一个我忘了去吃午饭的地方。我将尝试合并下面的答案,以帮助在午餐后构建这些数据。再次非常感谢。
-
非常积极的消息!很高兴你进展顺利。我很清楚你的感受,但请不要忘记吃东西 :-) 保重。
标签: excel vba web-scraping