htmlagilitypack 요소 선택 및 양식 제출

c# html-agility-pack xpath

문제

방금 htmlagilitypack으로 작업하기 시작했으며, 지금까지 그것을 사랑합니다.

라디오 버튼을 선택하고 htmlagility를 사용하여 양식을 제출하려고합니다.

다음은 웹 사이트의 구조입니다.

<form class="picker" action="link.html" method="POST">
    <ul class="selection-list">
        <li>
            <label>
                <span class="left-side">
                    <input name="id" value="t1" type="radio">
                </span>
                <span class="right-side">
                    Test1
                </span>
            </label>
        </li>
        <li>
            <label>
                <span class="left-side">
                    <input name="id" value="t2" type="radio">
                </span>
                <span class="right-side">
                    Test2
                </span>
            </label>
        </li>
        <li>
            <label>
                <span class="left-side">
                    <input name="id" value="t3" type="radio">
                </span>
                <span class="right-side">
                    Test3
                </span>
            </label>
        </li>
    </ul>
</form>

나는 양식을 얻을 수 있습니다. 다음은 코드입니다.

    HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(urlAddress);

// Get the form
var form = doc.DocumentNode.SelectSingleNode("//form[@class='picker']");

예를 들어,

  • Test2와 양식을 제출? htmlagilitypack을 사용하여 가능합니까 아니면 다른 라이브러리가 필요합니까?

    감사

  • 인기 답변

    var uri = // get uri from form;
    var formVariables = new List<KeyValuePair<string, string>>();
    
    // Populate your variables here; HtmlAgilityPack is useful for propagating existing form values
    formVariables.Add(new KeyValuePair<string,string>("id","t2"));
    
    var formContent = new FormUrlEncodedContent(formVariables);
    
    using (var message = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = uri, Content = formContent })
    {
        // use HttpClient to send the message
        using (var postResponse = await client.SendAsync(message))
        {
            if (postResponse.IsSuccessStatusCode)
            {
                var stringContent = await response.Content.ReadAsStringAsync();
    
                // Do something with string content
            }
        }
    }
    


    아래 라이선스: CC-BY-SA with attribution
    와 제휴하지 않음 Stack Overflow
    이 KB는 합법적입니까? 예, 이유를 알아보십시오.
    아래 라이선스: CC-BY-SA with attribution
    와 제휴하지 않음 Stack Overflow
    이 KB는 합법적입니까? 예, 이유를 알아보십시오.