Читайте конкретный div из HttpResponse - PullRequest
5 голосов
/ 22 февраля 2011

Я отправляю 1 httpWebRequest и читаю ответ.Я получаю полную страницу в ответе.Я хочу получить 1 div, который является именем объявления Оценить из ответа.Итак, как мне сопоставить этот шаблон?

Мой код выглядит так:

    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темп.т.е. я должен получить контент "Сегодняшняя ставка 55 рупий".

Так, как я могу сделать регулярное выражение для этого ???

Ответы [ 3 ]

9 голосов
/ 22 февраля 2011

Пакет HTML Agility может загрузить и проанализировать файл для вас, нет необходимости в грязных потоках и ответах:

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://jsbin.com/owobe3");
HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@id='rate']");
string rate = rateNode.InnerText;
4 голосов
/ 22 февраля 2011

Вы должны прочитать весь ответ, а затем использовать что-то вроде Html Agility Pack , чтобы проанализировать ответ и извлечь нужные биты в xpath-подобном синтаксисе:

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

Не используйте регулярные выражения!

0 голосов
/ 22 февраля 2011

Если у вас есть только один текст ставки сегодня, вы можете сделать это так:

Todays rate \d+ Rs.

В другом случае вы можете добавить тег div в свое регулярное выражение. Изменить: Извините, не установить регулярное выражение локально Вам нужно использовать группировку и получить значение из группы. Это будет выглядеть так

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

Не знаю, работает ли это, но используйте эту идею.

...