Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Отпарсить новости


Автор: ДобренькийПапаша 14.4.2010, 15:17
http://www.djforex.ru/
Как отпарсить новости с этой страницы? Новости к себе в программу надо засунуть, при этом сохранив ссылки на которые указывают эти новости (строки).

Автор: wester 14.4.2010, 16:52
самое банальное это Regex.
можно конечно еще разобрать как XML 

Автор: ДобренькийПапаша 14.4.2010, 17:52
Цитата(wester @ 14.4.2010,  16:52)
самое банальное это Regex.
можно конечно еще разобрать как XML

Вы говорите про то, что используется после парсинга. Мне нужно узнать как выдрать строки нужные со страницы))) (сохранив при этом ссылки). А Regex если понадобится потом, это уже другой вопрос.

Каждая строка мне нужная здесь обёрнута вот так:
Код

<TR class="news_header_nrm">
          <TD class="news_time" valign="top">15:25</TD>
          <TD><IMG src="/images/zamok_blue.gif" width="13" height="11"></TD>
          <TD class="news_header_nrm">

            <A href="/news/show.asp?id=2716392&ct=newsdailydemo" 
            class="news_header_nrm" 
            style="text-decoration:underline;">
                  Фондовые индексы мира на 11:25 по Гринвичу    //Вот это сама новость
            </A> 

          </TD>
        </TR>

Автор: jonie 15.4.2010, 10:32
ну вот регэксп
Код

<TR class="news_header_nrm">(.*?)</TR>

и чЕ, нам за вас писать "скачивалку, и применение этого регэкспа" ?)

Автор: diadiavova 15.4.2010, 12:16
Цитата(ДобренькийПапаша @  14.4.2010,  16:17 Найти цитируемый пост)
Как отпарсить новости с этой страницы? 

Проще всего воспользоваться готовым решением, sgmlreader, HTML Agility Pack, или той же библиотекой mshtml.

Автор: ДобренькийПапаша 15.4.2010, 16:07
Цитата(jonie @ 15.4.2010,  10:32)
ну вот регэксп
Код

<TR class="news_header_nrm">(.*?)</TR>

и чЕ, нам за вас писать "скачивалку, и применение этого регэкспа" ?)

Регэксп не рабочий. Я здесь кавычки внутри выражения на точки заменил, но всё равно не находит. У меня с регэкспами проблемы, так что, просьба с регэкспом помочь)))
Писать тут особо ничего и не надо. Вот код.

Код

private void Form1_Load(object sender, EventArgs e)
        {
            WebClient cl = new WebClient();
            string responseFromServer = cl.DownloadString("http://www.djforex.ru/");
            
            string pattern = @"<TR class=.news_header_nrm.>(.*?)</TR>";

            MatchCollection Matches = Regex.Matches(responseFromServer, pattern,
                                                    RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);

            foreach(Match nextMatch in Matches)
            {
                MessageBox.Show(nextMatch.ToString(), "CurrentNews");
            }
        }


Автор: ДобренькийПапаша 15.4.2010, 16:37
Так заработало)))
Код

 private void Form1_Load(object sender, EventArgs e)
        {
           WebClient cl = new WebClient();
           string responseFromServer = cl.DownloadString("http://www.djforex.ru/");
           
           Regex pattern = new Regex(@"class=.news_header_imp.\sstyle=.text-decoration:none;.>(.*?)</A>");
           MessageBox.Show(pattern.Match(responseFromServer).Groups[1].ToString());
           
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)