【发布时间】:2020-06-01 14:32:51
【问题描述】:
团队,我正在尝试单击加载更多按钮,我只需单击一下即可单击并运行宏而没有问题。那是一次。 我需要以下几点帮助
-
我正在尝试自动化代码以重复单击按钮,直到页面加载所有数据以进行网络抓取。
-
另外,我需要一个代码来检查网页中的加载更多按钮是否存在,然后再将数据抓取到 Excel 中。如果找不到“加载更多”按钮,请继续执行下一个代码。 (仅供参考,加载更多位于我的网页底部)。
谢谢,如果我的问题不清楚,请回复我。
下面是点击加载更多按钮之前的 Html 代码
<button type="button" class="btn primary btn-primary modal-button-print add-notes" data-bind="click: getNotes, visible: isLoadMoreButtonEnable() && !$root.providerShouldAcceptDecline()">
<i class="fa fa-refresh" aria-hidden="true"></i>Load More
</button>
以下是多次单击加载更多按钮直到加载完整数据后的 Html 代码
<button class="btn primary btn-primary modal-button-print add-notes" style="display: none;" type="button" data-bind="click: getWoNotes, visible: isLoadMoreNotesButtonEnable() && !$root.providerShouldAcceptDecline()">
<i class="fa fa-refresh" aria-hidden="true"></i>Load More Work Order Notes
</button>
我从上面的 html 代码中看到的区别是 style="display: none;" 在我多次单击按钮后添加,直到它在网页中加载完整数据。
我有一个类似于my 网页的示例网站。 我在这里使用此链接只是为了显示页面在我的网站中的加载方式。
Sub abc()
Set IE = New InternetExplorer
Link = my url
.
.
.
.
For L = 2 To Lr1
IE.navigate Link
Set Html = New MSHTML.HTMLDocument
Set Ws = Scraping
Do
DoEvents: Loop Until IE.readyState = READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("00:00:05"))
IE.document.querySelector("button[type=button]").Click
Do
DoEvents: Loop Until IE.readyState = READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("00:00:05"))
IE.document.querySelector("button[type=button]").Click
Do
DoEvents: Loop Until IE.readyState = READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("00:00:05"))
IE.document.querySelector("button[type=button]").Click
Do
DoEvents: Loop Until IE.readyState = READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("00:00:05"))
Html.body.innerHTML = IE.document.querySelectorAll(".list").Item(1).outerHTML
Set Tariku = Html.querySelectorAll(".columns")
Set data = Html.querySelectorAll(".datalist")
With Ws
' Do all the stuff
End With
IE.document.querySelector("#Logout").Click
IE.Quit
Exit Sub
Next L
End Sub
【问题讨论】:
-
两个问题:1. 你有没有在点击按钮的时候检查一下页面在IE中是否正常工作?我最近想自动化 load more 按钮,但是为按钮存储的页面脚本在 IE 中不起作用。 2. 按钮是页面上唯一的按钮,还是至少是 HTML 源代码中的第一个按钮?您使用
querySelector(),它正好指向找到的第一个按钮。 -
@Zwenn, 1. 是的,目前我正在使用 IE,当我点击按钮时它工作正常...... 2. 这是页面上唯一的按钮。
-
当特定页面中的数据较多时,此按钮可用。在某些情况下,您将找不到加载更多按钮,因为它的数据有限,完全适合页面...
标签: html excel vba web-scraping