如何从btnclass网络抓取中提取属性详细信息

时间:2019-04-19 21:54:28

标签: excel vba web-scraping excel-2016

我目前正在尝试从网页上的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并失败了。 / p>

我尝试了以下选项:

独特元素

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

1 个答案:

答案 0 :(得分:2)

虽然我没有检查您的行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")