【发布时间】:2020-04-02 03:07:53
【问题描述】:
我很想得到一些帮助,因为我已经苦苦挣扎了一个多星期,试图找到答案。我有以下 HTML,需要提取总行号并将其保存到 Excel 字段中。
<div class="vcr_controls">
<input>
<span class="sr-only">Showing rows 1 to 100 of 166</span>
<span class="list_row_number_input">to "
<span id="random id_last_row">100</span>
of "
<span id="random id_total_rows">166</span>
</span>
</div>
我写的VBA如下:
Sub Test()
'/SET VARIABLES/
Dim loginPath as String
Dim totalRows as String
Dim IE as Object
LoginPath ="https:/domain.com/login"
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.Navigate loginPath
Do Until IE.ReadyState = 4
Loop
IE.Document.getElementByID("user_name").Value = "User"
IE.Document.getElementByID(user_password).Value = "Password"
'/SET VARIABLE AND REDIRECT
Dim cellURL as String
cellURL = Worksheet("Sheet1").Cells(2, "S").Value
loginPath = cellURL
IE.Navigate loginPath
Do Until IE.ReadyState = 4
Loop
'/NEED HELP HERE
Dim xobj
Set xobj = IE.Document.getElementById("vcr_controls").getElementsByClassName("list_row_input").Item(0)
Set xobj = xobj.getElementsByTagName("span").Item(1)
'/I CANNOT FIGURE OUT HOW TO EXTRACT THE TOTAL ROWS AND THEN SAVE THE NUMBER TO .Cells(2, "T")
由于 total_rows 跨度标签生成了一个随机的字母数字,我不能简单地通过类名来选择它。登录的整个第一部分工作得很好。
【问题讨论】:
-
我认为你可以做一些寻找部分字符串的事情。试试
...querySelectorAll("[id^='id_total_rows']") -
嗨,谢谢。我试过: Dim xobj Set xobj = IE.Document.querySelectorAll("[id^='id_total_rows']") Dim var1 = xobj MsgBox var1 消息框出现错误:[object NodeList] Do I need to convert the当我使用 Set 命令时对象到一个字符串?
-
啊 - 尝试
...querySelectorAll("[...]").innerText获取字符串。 -
我之前在尝试其他方法时得到了这个,但现在该框显示:[运行时错误'438':对象不支持此属性或方法]再次感谢
标签: html excel vba web-scraping