Excel 使用VBA和selenium进行刮削时从部分id获取完整值
我正在(试图)从一个有很多信息的内联网页面中获取信息Excel 使用VBA和selenium进行刮削时从部分id获取完整值,excel,vba,selenium-webdriver,web-scraping,Excel,Vba,Selenium Webdriver,Web Scraping,我正在(试图)从一个有很多信息的内联网页面中获取信息 <div id="CustID_1234567"[...]> <div class="logged">2019-09-27</div> </div> <div id="CustID_2345678"[...]> <div class="logged">2019-09-26</div> </div> 第一个(.id)以错误结尾,但最
<div id="CustID_1234567"[...]>
<div class="logged">2019-09-27</div>
</div>
<div id="CustID_2345678"[...]>
<div class="logged">2019-09-26</div>
</div>
第一个(.id)以错误结尾,但最后一个(.text)得到了文本(duh),“2019-09-27”和“2019-09-26”,所以我想我离真正的解决方案并不远
有什么建议吗?从检索到的元素中获取“id”属性以获取完整值
bot.FindElementsByXPath("//*[contains(@id, 'CustID_')]").Item(a).attribute("id")
有一种更快的方法(比xpath更快)使用正确的语法,使用css选择器添加到数组中。这也更准确,因为它匹配的是以开头而不是包含
Dim elem As Object, elems As Object
Set elems = bot.FindElementsByCss("[id^=CustID_]")
For each elem in elems
Debug.Print elem.Attribute("id")
Next
存储在数组中
Dim elem As WebElement, elems As WebElements, i As Long, arr()
Set elems = bot.FindElementsByCss("[id^=CustID_]")
ReDim arr(1 To elems.Count)
For Each elem In elems
i = i + 1
arr(i) = elem.Attribute("id")
Next
您的xpath是正确的。它应该返回所有元素。如果您试图获取fill cust_id,那么您应该尝试获取id属性。。像这样的。。。Xpath(“”.item(a).getAttribute(“id”).attribute(“id”)完成了“bot.FindElementsByXPath(“/*[contains(@id,'CustID')]”)的技巧。item(a).attribute(“id”)”谢谢。我可以请你给我一个答案,这样我就可以把它标记为正确答案吗?完成了。很高兴能帮忙!!!
Dim elem As WebElement, elems As WebElements, i As Long, arr()
Set elems = bot.FindElementsByCss("[id^=CustID_]")
ReDim arr(1 To elems.Count)
For Each elem In elems
i = i + 1
arr(i) = elem.Attribute("id")
Next