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

<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" />

私はxpath式に本当に間違っているものがあることを知っています。どんな種類の魂がいくつかの示唆を与えることができますか?どうもありがとう!

受け入れられた回答

まず、コードはdoc.Load行で失敗します。なぜなら、 'Load'メソッドはファイルパスのみのURIをサポートしていないからです。 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 value = doc.DocumentNode.SelectSingleNode("//form[@id='setupform']");
Console.WriteLine(value.OuterHtml);



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ