我正在用Excel VBA编写代码以获取类的href
值并导航至该href链接
(即)这是我想进入特定Excel工作表的href
值,我想通过我的VBA代码自动导航到该链接。
<a href="/questions/51509457/how-to-make-the-word-invisible-when-its-checked-without-js" class="question-hyperlink">How to make the word invisible when it's checked without js</a>
我得到的结果是,我能够得到包含标签的类值How to make the word invisible when it's checked without js
<----这就是我在工作表中得到的标题。我想要得到的是此标题拥有一个href
链接/questions/51509457/how-to-make-the-word-invisible-when-its-checked-without-js
,这就是我想要得到的并浏览我的代码。
请帮帮我。预先感谢
下面是整个编码:
Sub useClassnames()
Dim element As IHTMLElement
Dim elements As IHTMLElementCollection
Dim ie As InternetExplorer
Dim html As HTMLDocument
'open Internet Explorer in memory, and go to website
Set ie = New InternetExplorer
ie.Visible = True
ie.navigate "https://stackoverflow.com/questions"
'Wait until IE has loaded the web page
Do While ie.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Set html = ie.document
Set elements = html.getElementsByClassName("question-hyperlink")
Dim count As Long
Dim erow As Long
count = 0
For Each element In elements
If element.className = "question-hyperlink" Then
erow = Sheets("Exec").Cells(Rows.count, 1).End(xlUp).Offset(1, 0).Row
Sheets("Exec").Cells(erow, 1) = html.getElementsByClassName("question-hyperlink")(count).innerText
count = count + 1
End If
Next element
Range("H10").Select
End Sub
我在这个网站上找不到任何人问的任何答案。请不要重复提出这个问题。
<div class="row hoverSensitive">
<div class="column summary-column summary-column-icon-compact ">
<img src="images/app/run32.png" alt="" width="32" height="32">
</div>
<div class="column summary-column ">
<div class="summary-title summary-title-compact text-ppp">
<a href="**index.php?/runs/view/7552**">MMDA</a>
</div>
<div class="summary-description-compact text-secondary text-ppp">
By on 7/9/2018 </div>
</div>
<div class="column summary-column summary-column-bar ">
<div class="table">
<div class="column">
<div class="chart-bar ">
<div class="chart-bar-custom link-tooltip" tooltip-position="left" style="background: #4dba0f; width: 125px" tooltip-text="100% Passed (11/11 tests)"></div>
</div>
</div>
<div class="column chart-bar-percent chart-bar-percent-compact">
100%'
答案 0 :(得分:1)
使用XHR通过问题首页URL发出初始请求;应用CSS选择器检索链接,然后将那些链接传递到IE导航到
用于选择元素的CSS选择器:
您想要元素的href
属性。已经给出了一个示例。您可以使用getAttribute,或者如@Santosh所指出的,将href
属性CSS选择器与其他CSS选择器结合起来以定位元素。
CSS选择器:
a.question-hyperlink[href]
寻找具有父类a
标签,元素为question-hyperlink
和属性href
的元素。
然后,将CSS选择器组合与querySelectorAll
的{{1}}方法一起应用以收集链接的nodeList。
XHR以获取链接的初始列表:
我会先以XHR的形式发布此文件,速度更快,然后将链接收集到collection / nodeList中,然后再使用IE浏览器循环。
document
上面的Option Explicit
Public Sub GetLinks()
Dim sResponse As String, HTML As New HTMLDocument, linkList As Object, i As Long
Const BASE_URL As String = "https://stackoverflow.com"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://stackoverflow.com/questions", False
.send
sResponse = StrConv(.responseBody, vbUnicode)
End With
sResponse = Mid$(sResponse, InStr(1, sResponse, "<!DOCTYPE "))
With HTML
.body.innerHTML = sResponse
Set linkList = .querySelectorAll("a.question-hyperlink[href]")
For i = 0 To linkList.Length - 1
Debug.Print Replace$(linkList.item(i), "about:", BASE_URL)
Next i
End With
'Code using IE and linkList
End Sub
中是一个nodeList,其中包含主页中所有匹配的元素,即问题登录页面上的所有linkList
。您可以循环href
的{{1}}并对其进行索引以检索特定的.Length
,例如linkList.item(i)。由于返回的链接是相对的,因此您需要使用协议+域(即nodeList
)替换路径的相对href
部分。
现在您已经快速获得该列表并可以访问项目,您可以将任何给定的更新后的about:
传递到"https://stackoverflow.com"
上。
使用IE和nodeList导航问题
href
使用XHR通过GET请求发出初始请求并搜索问题标题;应用CSS选择器检索链接,然后将那些链接传递到IE进行导航。
IE.Navigate
答案 1 :(得分:0)
此protected String getMyData(String param){
HashMap<String, String> params = new HashMap<>();
params.put("param1", apicall);
params.put("param2", param);
MyAsyncClass myAsyncClass = new MyAsyncClass(params);
myData= myAsyncClass.execute().get();
/* Here after finishing the task I want to return the data to the caller */
return myData;
}
是无用的,因为它总是真实的,因为您StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.enableCheckpointing(5000);
,因此所有元素都绝对属于If element.className = "question-hyperlink" Then
类。 getElementsByClassName("question-hyperlink")
语句可以删除。
您在变量question-hyperlink
中拥有每个链接,因此不需要If
。代替element
,请使用count
。
所以它应该像这样:
html.getElementsByClassName("question-hyperlink")(count).innerText