Используя 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);
}