首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetElementById来自HttpWebResponse

GetElementById来自HttpWebResponse
EN

Stack Overflow用户
提问于 2012-09-23 18:26:57
回答 2查看 4.6K关注 0票数 0

最近,我正在与网页刮刮‘乐趣’。我想使用的网站没有API,所以我别无选择,我不得不这样做。

我遇到的问题之一是读取HTML树的元素(我指的是标签、内部文本之类的东西)。我使用HttpWebRequestHttpWebResponse向服务器发送GET/POST请求。

有了webResponse,我可以这样读取HTML源代码:

代码语言:javascript
复制
StreamReader sr = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);
string sourceCode = sr.ReadToEnd();

我需要的是这个value标记的input

代码语言:javascript
复制
<form action="/file.php" method="post">
    <input name="abc" id="abc" type="hidden" value="some_random_value" />
</form>

我怎么能这么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-23 19:34:25

我会用HtmlAgilityPack

代码语言:javascript
复制
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;
票数 1
EN

Stack Overflow用户

发布于 2012-09-23 18:30:23

其中一种方法是使用HTML解析HTML,然后使用XPath简单地选择所需的元素。

这将比尝试从包含HTML的字符串中正则化相关代码要干净得多。

http://htmlagilitypack.codeplex.com/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12555040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档