C# 来自HttpWebResponse的GetElementById
最近我对网页抓取很有兴趣。我想使用的网站没有API,所以我别无选择,我必须这样做 我遇到的问题之一是读取HTML树的元素(我指的是标记、内部文本和类似的东西)。我使用C# 来自HttpWebResponse的GetElementById,c#,.net,web-scraping,C#,.net,Web Scraping,最近我对网页抓取很有兴趣。我想使用的网站没有API,所以我别无选择,我必须这样做 我遇到的问题之一是读取HTML树的元素(我指的是标记、内部文本和类似的东西)。我使用HttpWebRequest和HttpWebResponse向服务器发送GET/POST请求 拥有webResponse我可以通过以下方式阅读HTML源代码: StreamReader sr=newstreamreader(webResponse.GetResponseStream(),Encoding.UTF8); 字符串sour
HttpWebRequest
和HttpWebResponse
向服务器发送GET/POST请求
拥有webResponse
我可以通过以下方式阅读HTML源代码:
StreamReader sr=newstreamreader(webResponse.GetResponseStream(),Encoding.UTF8);
字符串sourceCode=sr.ReadToEnd();
我需要的是这个输入
标签的值
:
如何做到这一点?一种方法是使用HTML解析器解析HTML,然后使用XPath简单地选择所需的元素 这比试图从包含HTML的字符串中正则化相关代码要干净得多
一种方法是使用HTML解析器解析HTML,然后使用XPath简单地选择所需的元素 这比试图从包含HTML的字符串中正则化相关代码要干净得多 我会用
stringhtml=@”
";
HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
//Xpath
var value1=doc.DocumentNode.SelectSingleNode(//input[@id='abc'])
.属性[“值”]。值;
//林克
var value2=doc.DocumentNode.subjects(“输入”)
.First(i=>i.Attributes[“id”!=null&&
i、 属性[“id”]。值==“abc”)
.属性[“值”]。值;
我会使用
stringhtml=@”
";
HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
//Xpath
var value1=doc.DocumentNode.SelectSingleNode(//input[@id='abc'])
.属性[“值”]。值;
//林克
var value2=doc.DocumentNode.subjects(“输入”)
.First(i=>i.Attributes[“id”!=null&&
i、 属性[“id”]。值==“abc”)
.属性[“值”]。值;
WoW!太棒了!伟大的解析器。它就像一个符咒。非常感谢(特别是XPath表达式)。哇!太棒了!伟大的解析器。它就像一个符咒。非常感谢(特别是XPath表达式)。
string html = @"<form action=""/file.php"" method=""post"">
<input name=""abc"" id=""abc"" type=""hidden"" value=""some_random_value"" />
</form>";
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
//Xpath
var value1 = doc.DocumentNode.SelectSingleNode("//input[@id='abc']")
.Attributes["value"].Value;
//Linq
var value2 = doc.DocumentNode.Descendants("input")
.First(i => i.Attributes["id"] != null &&
i.Attributes["id"].Value == "abc")
.Attributes["value"].Value;