首页 > 解决方案 > 如何从 btnclass 网络抓取中提取属性详细信息

问题描述

我目前正在尝试从网页上的 BTnClass 元素中提取特定信息。

具体的按钮和前面的元素细节是:

<div class="m-t-sm">

<button class="btnLink " id="viewClientRecord_1-00001"
type="button" data-url="/?mtoken=itg999="><span class="text">View referral summary and client record
<span class="offscreen">&nbsp;for CLIENT NAME</span></span></button>

我正在尝试检索数据

data-url

为了进一步增加复杂性,有 200,000 条客户记录,并且 Btn 类的 ID 对每个客户都是唯一的,所以我不能依赖 ID 来工作(据说我也尝试使用 ID 并且失败了。

我尝试了以下选项:

独特的元素

Sheets("Results").Range("A" & ClientRowNumber).Value = html.getElementById("viewClientRecord_1-00001")(0).Children(0).getAttribute("data-url")(0).innerHTML

顶级 div 类

Sheets("Results").Range("A" & ClientRowNumber).Value = html.getElementsByclassname("Cardf-row")(0).Children(0).getAttribute("data-url")(0).innerHTML

上一课

Sheets("Results").Range("A" & ClientRowNumber).Value = html.getElementsByclassname("m-t-sm")(0).Children(0).getAttribute("data-url")(0).innerHTML

Sheets("Results").Range("A" & ClientRowNumber).Value = html.getElementsByclassname("m-t-sm")(0).getAttribute("data-url")(0).innerHTML

Sheets("Results").Range("A" & ClientRowNumber).Value = html.getElementsByclassname("m-t-sm")(0).getAttribute("data-url").innerHTML

Sheets("Results").Range("A" & ClientRowNumber).Value = html.getElementsByclassname("btnlink ")(0).getAttribute("data-url").innerHTML

无论我尝试什么,我都无法获取 getAttribute("data-url") 任何东西:(

编辑。更新为 GetElementsByClassName

标签: excelvbaweb-scrapingexcel-2016

解决方案


虽然我没有检查您的线路html.getElementById("viewClientRecord_1-00001")(0).Children(0),但我认为它是正确的,但索引号是非法的.getElementByID()

.getAttribute()函数不返回集合。如果是这样,它可能会遵循 . 的其余HTMLDocument命名约定,并且会附加s一个.getAttributes(). 这意味着您不能像使用.getAttribute("data-url")(0).

此外,getAttribute()返回一个字符串。字符串不包含.innerText属性。您需要删除.innerText并从函数返回结果getAttribute。这将为您带来以下最终结果:

Sheets("Results").Range("A" & ClientRowNumber).Value = _
     html.getElementById("viewClientRecord_1-00001").Children(0).getAttribute("data-url")

推荐阅读