使用 LINQ 使用 C# 从 HTML 中减去所有隐藏的输入
本文关键字:使用 隐藏 输入 LINQ HTML | 更新日期: 2023-09-27 17:56:23
您好,我有以下来自网络客户端代码的HTML
<body onLoad="window.focus()">
<form name="form1" method="post" action="/www/www.do">
<input type="hidden" name="value1" value="aaaa">
<input type="hidden" name="value2" value="bbbb">
<input type="hidden" name="value3" value="cccc">
<input type="hidden" name="value4" value="dddd">
<input type="hidden" name="value5" value="eeee">
more html.....
</body>
如何提取使用 C# linq 或字符串函数隐藏的输入类型的所有名称和值?
使用 HtmlAgilityPack,您可以执行以下操作:
var doc = new HtmlWeb().Load("http://www.mywebsite.com");
var nodes = doc.DocumentNode.SelectNodes("//input[@type='hidden' and @name and @value]");
foreach (var node in nodes) {
var inputName = node.Attributes["name"].Value;
var inputValue = node.Attributes["value"].Value;
Console.WriteLine("Name: {0}, Value: {1}", inputName, inputValue);
}
如果要从文本文件而不是 URL 加载文档,可以执行以下操作:
var doc = new HtmlDocument();
doc.Load(@"C:'file.html");
如果您仍想将 LINQ 用于此目的,因为SelectNodes
返回一个HtmlNodeCollection
,这是一个IEnumerable<Node>
,您可以执行以下操作:
var query = from f in doc.DocumentNode.DescendantNodes()
where f.Name == "input" && f.GetAttributeValue("type", "") != ""
&& f.Attributes.Contains("name") && f.Attributes.Contains("value")
select new
{
f.Attributes["value"].Value,
f.Attributes["name"].Name
};
foreach (var q in query) {
Console.WriteLine("Name: {0}, Value: {1}", q.Name, q.Value);
}