我是c#和htmlagilitypack的新手,我一直试图获得signup_form_id的值 这是2079787163
<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" />
继承我的编码
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表达式确实存在问题,我真的对此无能为力。任何善良的灵魂都能提出一些建议吗非常感谢!
答案 0 :(得分:3)
首先,您的代码在doc.Load
行上失败,因为'Load'方法不支持URI,只支持文件路径。您应该使用HtmlWeb
的{{1}}方法下载HTML。
第二,XPath中的缺陷:
Load
]
总之,您应该按如下方式修改代码:
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);
代码,而不是input
。因此,应修改XPath以符合此要求。
以下是读取所需数据的代码:
form