从HttpResponse中读取特定的div

时间:2011-02-22 07:05:37

标签: c# asp.net regex httpwebrequest httpwebresponse

我发送了1个httpWebRequest并读取了响应。 我在回复中获得了整页。 我想获得1个div,这是来自响应的名称ad rate。 那么我该如何匹配这种模式呢?

我的代码就像:

    HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("http://www.domain.com/");
    HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
    Stream response = WebResp.GetResponseStream();
    StreamReader data = new StreamReader(response);
    string result = data.ReadToEnd();

我得到的反应如下:

<HTML><BODY><div id="rate">Todays rate 55 Rs.</div></BODY></HTML>

我想阅读div rate的数据。即我应该获得内容“今天率55卢比。”

那么如何才能为此制作正则表达式

3 个答案:

答案 0 :(得分:9)

HTML Agility Pack可以为您加载和解析文件,不需要杂乱的流和响应:

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://jsbin.com/owobe3");
HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@id='rate']");
string rate = rateNode.InnerText;

答案 1 :(得分:4)

您应该阅读整个响应,然后使用类似Html Agility Pack的内容来解析响应,并以类似xpath的语法提取所需的位:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(result);
var output = doc.DocumentNode.SelectSingleNode("//div[@id='rate']").InnerHtml;

不要使用正则表达式!

答案 2 :(得分:0)

如果您只有一个今日费率文本,那么您可以这样做:

Todays rate \d+ Rs.

在其他情况下,您可以在正则表达式中添加div标签。 编辑:对不起,没有在本地安装正则表达式 您需要使用分组并从组中获取值。它看起来像这样

<div id="rate">(?<group>[^<])</div>

不知道它是否有效,但请使用这个想法。