【问题标题】:Parsing Form action and input name and values using html agility pack使用 html 敏捷包解析表单操作和输入名称和值
【发布时间】:2012-09-08 06:49:02
【问题描述】:

我正在尝试使用以下 HTML 代码中的值解析表单操作值和输入名称:

            <form method="post" action="actionURL" autocomplete="" name="login_form" id="login_form" onsubmit="return hash2(this)">

            <input type="hidden" name=".tries" value="1">
            <input type="hidden" name=".src" value="ym">
            <input type="hidden" name=".md5" value="">
            <input type="hidden" name=".hash" value="">
            <input type="hidden" name=".js" value="">
            <input type="hidden" name=".last" value="">
            <input type="hidden" name="promo" value="">
            <input type="hidden" name=".intl" value="us">
            <input type="hidden" name=".lang" value="en">
            <input type="hidden" name=".bypass" value="">
            <input type="hidden" name=".partner" value="">
            <input type="hidden" name=".u" value="8013sg1858dp9">
            <input type="hidden" name=".v" value="0">
            <input type="hidden" name=".challenge" value="fUhehaaMq9c2lQjndCps_rNu1eSB">
            <input type="hidden" name=".yplus" value="">
            <input type="hidden" name=".emailCode" value="">
            <input type="hidden" name="pkg" value="">
            <input type="hidden" name="stepid" value="">
            <input type="hidden" name=".ev" value="">
            <input type="hidden" name="hasMsgr" value="0">
            <input type="hidden" name=".chkP" value="Y">
            <input type="hidden" name=".done" value="somevalue">
            <input type="hidden" name=".pd" value="ym_ver=0&c=&ivt=&sg=">
            <input type="hidden" name=".ws" id=".ws" value="0">
            <input type="hidden" name=".cp" id=".cp" value="0">     
            <input type="hidden" name="nr" value="0">

            <input type="hidden" name="pad" id="pad" value="5">
            <input type="hidden" name="aad" id="aad" value="5">

                            <div id='inputs'>

                <label for='username'>Yahoo! ID</label>
                                    <input name='login' id='username' maxlength='96' tabindex='1' value=''>

                    <p id='ex'>(e.g. test)</p>

                <label for='passwd'>Password</label>
                <input name='passwd' id='passwd' type='password' maxlength='64' tabindex='2'>


    <div id="captchaDiv"></div>
            </div>
<div id='fun'></div>

        <div id='persistency'>
            <input type='checkbox' name='.persistent' id='persistent' tabindex='4' value='y' >
            <p>
              <label for='persistent'>Keep me signed in</label>
              <br>
              <span id='uncheck'>(Uncheck if on a shared computer)</span>
            </p>
        </div>


    <div id='submit'>
        <button type='submit' id='.save' name='.save' class='secondaryCta' tabindex='5'>
          Sign In
        </button>           </div>
</form>

上面的表格包含,输入类型在直接子代和子代的子代旁边。在此处使用示例时:https://stackoverflow.com/a/9890022/1007447 c# 上的代码跟踪找不到名称“form”的元素或后代。

如何获取表单动作和所有输入类型的值? (有时,我也需要跳过用户名密码部分)

【问题讨论】:

    标签: c# forms html-agility-pack


    【解决方案1】:

    这已在 Stack Overflow 上讨论过几次。

    答案与您所指的问题相同。你必须这样做:

    HtmlNode.ElementsFlags.Remove("form");
    
    var doc = ... //Load the document here
    
    var nodes = doc.DocumentNode.SelectNodes("//form//input");
    

    钥匙在线

    HtmlNode.ElementsFlags.Remove("form")
    

    以及为什么需要添加它的解释可以在以下页面找到:

    【讨论】:

    • 由于花了一些时间来回答,我选择了正则表达式解决方案。我会再试一次。
    • @William.Ebe 很高兴听到您找到了一个不错的选择,但我建议您在解析 HTML 时使用库而不是正则表达式 :)
    猜你喜欢
    • 2012-08-23
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多