VBA代码:从HTTP响应接收的表中获取元素值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA代码:从HTTP响应接收的表中获取元素值相关的知识,希望对你有一定的参考价值。
我需要你的帮助来从HTTP响应中收到的表单中获取元素值。场景:例如,在购买股票时,您点击特定股票的“买入”按钮。同时会有一个表格打开,您将填写所有必要的细节和下订单。该表单包含一些隐藏的值,如:“stk_token”,“user_access”,“user_id”等。如果我解码HTTP响应,我可以看到这些值(html代码的一部分为已接收)。如果您需要更多信息,请告诉我。
</table>
</div>
</td>
</tr>
</table>
<INPUT TYPE="hidden" name="stk_token" id="stk_token" value='1820'>
<INPUT TYPE="hidden" name="stk_me" id="stk_me" value='NN'>
<INPUT TYPE="hidden" name="stk_it" id="stk_it" value='EQ'>
<INPUT TYPE="hidden" name="amo" id="amo" value=0 >
<INPUT TYPE="hidden" name="so" id="so" value=0 >
<INPUT TYPE="hidden" name="order_buy_sell" id="order_buy_sell" >
<INPUT TYPE="hidden" name="timestamp" id="timestamp" value="1549432660">
<INPUT TYPE="hidden" name="client_id" id="client_id" value="M0KGI">
<INPUT TYPE="hidden" name="oc" id="oc" value="">
<INPUT TYPE="hidden" name="cover" id="cover" value="">
<INPUT TYPE="hidden" name="mit" id="mit" value="">
<INPUT TYPE="hidden" name="multipler" id="multipler" value="1">
<INPUT TYPE="hidden" name="user_access" id="user_access" value="1021112110001000500011101001100000200110011001000000000000000000">
<INPUT TYPE="HIDDEN" NAME="key" id="key" value="F7E57EE9-A3BD-4804-9439-387FB8B0528F">
<INPUT TYPE="hidden" name="stk_ltp" id="stk_ltp" value="211.35">
<INPUT TYPE="HIDDEN" NAME="orderdata" id="orderdata" value="">
<INPUT TYPE="hidden" name="user_id" id="user_id" value="M84_153" >
<INPUT TYPE="hidden" name="client_group" id="client_group" value="M0KGI" >
<INPUT TYPE="hidden" name="branch_id" id="branch_id" value="FP" >
<INPUT TYPE="hidden" name="lsrc" id ="lsrc" value="0" >
<INPUT TYPE="hidden" name="wlsrc" id ="wlsrc" value="WEB" >
<INPUT TYPE="hidden" name="brckt_flag" id="brckt_flag" value="normal" >
<INPUT TYPE="hidden" name="delivery_lot_comm" id ="delivery_lot_comm" value="0.00" >
<INPUT TYPE="hidden" name="price_den_comm" id ="price_den_comm" value="1.00" >
</FORM>
<script type="text/javascript" charset="utf-8" src="/resources/trading/js/profile/default.js"></script> <!--for main js-->
<div id="disp_footer" ></div>
<script>
我需要在我的工作表上获得所有Id的值(“order_buy_sell”,“client_id”等等)。但如果我试图打印单个值,它就无法正常工作。请帮助我。我已经花了很多时间来解决但没有成功。这对我很有帮助
xmlhttp.setRequestHeader "Accept-Language", "en-US,en;q=0.9"
xmlhttp.setRequestHeader "Cookie", cook
xmlhttp.send bodyR
html.body.innerHTML = xmlhttp.responseText
'---to get cookies-----
getcookres = xmlhttp.GetResponseHeader("Set-Cookie")
Worksheets("Action").Cells(3, 24).Value = getcookres
Worksheets("Action").Range("X3:Z3").Replace What:="path=/; HttpOnly", Replacement:="", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'---cookies Close-----
'--- to get elements---
Dim ele As Object
Set ele = html.querySelectorAll("#user_access")
Debug.Print ele.Item.innerText
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
End Sub
答案
你想要querySelector
方法,因为它返回一个单独的元素,这通常是使用id选择器的情况。 querySelectorAll
返回您必须索引的nodeList。
Set ele = html.querySelector("#user_access")
然后,看起来你可能真的想要value属性,你可以试试
Debug.Print ele.value
另一种检索方法是使用
ele.getAttribute("value")
如果你想要所有type
= hidden
,并且element是input
元素,你可以使用attribute = value选择器和type选择器:
Dim nodeList As Object, i As Long
Set nodeList = html.querySelectorAll("input[type=hidden]")
For i = 0 To nodeList.Length - 1
Debug.Print nodeList.item(i).NAME, nodeList.item(i).Value
Next
以上是关于VBA代码:从HTTP响应接收的表中获取元素值的主要内容,如果未能解决你的问题,请参考以下文章