VBA代码:从HTTP响应接收的表中获取元素值

问题描述 投票:0回答:1

我需要你的帮助来从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
excel vba http web-scraping
1个回答
0
投票

你想要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
© www.soinside.com 2019 - 2024. All rights reserved.