HtmlAgilityPack을 사용하여 html에서 값 추출하기

c# html-agility-pack xpath

문제

임 C와 htmlagilitypack 새로운 그리고 난 2079787163입니다 signup_form_id의 가치를 얻으려고 노력했습니다

<form name="setupform" id="setupform" method="post" action="/signup/" target="_top">
<input type="hidden" name="form_type" value="blog" />
<input type="hidden" name="stage" value="" />
<input type="hidden" name="loc" value="signup" />
<input type='hidden' name='signup_form_id' value='2079787163' /><input type="hidden" id="_signup_form" name="_signup_form" value="9783b65654" />

Heres 내 코딩

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("https://signup.wordpress.com/signup/");
var value = doc.DocumentNode.SelectSingleNode("//form[@name='signup_form_id'");
Console.WriteLine(value.InnerText);

나는 뭔가 내 xpath 표현과 정말 잘못이 사실에 대해 우둔 알고. 어떤 영혼이 어떤 제안을 할 수 있습니까? 고마워!

수락 된 답변

우선 '로드'메소드가 파일 경로 만 URI를 지원하지 않기 때문에 코드가 doc.Load 행에서 실패합니다. HTML을 다운로드하려면 HtmlWebLoad 메서드를 사용해야합니다.

둘째, XPath의 결함 :

  • 당신은 닫는 괄호를 잊었다 ]
  • 이름이 signup_form_id 설정된 양식이 없습니다.

결론적으로 다음과 같이 코드를 수정해야합니다.

var url = "http://signup.wordpress.com/signup/";

var htmlWeb = new HtmlWeb();
var doc = htmlWeb.Load(url);

var value = doc.DocumentNode.SelectSingleNode("//form[@id='setupform']");
Console.WriteLine(value.OuterHtml);

업데이트 : 질문을 명확히 해 주셔서 감사합니다. 문제에 대해 처음에는 잘못 이해했습니다.

form 아닌 input 태그를 찾는 것처럼 보입니다. 따라서이 요구 사항에 맞게 XPath를 수정해야합니다.

필요한 데이터를 읽는 코드는 다음과 같습니다.

var url = "http://signup.wordpress.com/signup/";

var htmlWeb = new HtmlWeb();
var doc = htmlWeb.Load(url);

var signupFormIdElement = doc.DocumentNode
    .SelectSingleNode("//input[@name='signup_form_id']");

var signupFormId = signupFormIdElement.GetAttributeValue("value", "");

Console.WriteLine(signupFormId);


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