Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
.NET 3.x

Парсинг и вывод определенного количества записей

28.07.2015, 15:02. Показов 2112. Ответов 25
Метки нет (Все метки)

Доброго, пишу что то подобие чата, сначало использовал WebBrowser , но теперь просто использую парсинг и вывожу в label1 , вопрос как сделать так чтобы выводилась не одна запись а например 10 , пробовал for не вышло
код вывода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (int i = 0; i <= 10; i++)
            {
                // Отправляем GET запрос и получаем в ответ HTML-код сайта с курсом валюты
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
                html = myStreamReader.ReadToEnd();
 
 
                // Вытаскиваем из HTML-кода нужные данные
                Match match = Regex.Match(html, pattern);
                Match match2 = Regex.Match(html, pattern2);
                Match match3 = Regex.Match(html, pattern3);
 
                string login = String.Format("{1}\n", url, match.Groups[1].ToString());
                string datetime = String.Format("{1}\n", url, match2.Groups[1].ToString());
                string message = String.Format("{1}\n", url, match3.Groups[1].ToString());
                label1.Text = login + "   " + datetime + " " + message;
 
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2015, 15:02
Ответы с готовыми решениями:

Вывод определенного количества записей на РНР
Здравствуйте! Делаю блог на РНР, и сейчас возникла потребность сделать следующее: Нужно заставить код выводить не более 10...

Rss вывод определенного количества записей
&lt;?php $url = 'http://www.ato.ru/feed/taxonomy/term/1882'; //адрес RSS ленты $rss = simplexml_load_file($url); ...

Вывод определённого количества записей на страницу
Добрый вечер. Помогите пожалуйста. Нужно сделать вывод примерно 10 записей из таблице, не как не могу сделать, получается только одна...

25
1 / 1 / 8
Регистрация: 25.05.2015
Сообщений: 22
29.07.2015, 10:39
Код из первого сообщения и должен выводить одно и тоже.
Вы каждый раз создаете request к одной и той же страничке и каждый раз берете первое совпадение pattern1-3
(соответственно, поэтому и выводиться только первое найденное сообщение).
Match возвращает первое, что ему попадется подходящее под шаблон.
Используйте Regex.Matches()
Примерный код:


C#
1
2
3
4
5
6
var lbls = new List<label>();
foreach (var i in Regex.Matches(html, pattern))
{
   var lbl = new Label() { Text = i.Groups[1].ToString() };
   lbls.Add(lbl);
}
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
29.07.2015, 11:07  [ТС]
tob9l, в pattern1-3 я указал какие строки мне нужно парсить, это не помеха будет?
0
1 / 1 / 8
Регистрация: 25.05.2015
Сообщений: 22
29.07.2015, 15:35
Т.е.? Скинь свои pattern1-3
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
29.07.2015, 15:40  [ТС]
tob9l,
C#
1
2
3
string pattern = " <b>(.*)</b><br />";
        string pattern2 = " <span class=\"small\">(.*)</span>";
        string pattern3 = "<div style=\"padding:3px 0px 3px 0px;color:#333;font-size:11px;\">\n(.*)\n</div>";
0
1 / 1 / 8
Регистрация: 25.05.2015
Сообщений: 22
29.07.2015, 16:39
Нет, не помеха.
C#
1
2
3
4
5
6
7
8
9
10
11
int i = 0;
var logins = Regex.Matches(html, pattern1);
var sendedTime = Regex.Matches(html, pattern2);
var messages = Regex.Matches(html, pattern3);
var lbls = new List<Label>();
foreach (var message in messages)
{
   var lbl = new Label() { Text = logins[i].Groups[1].ToString() + " " sendedTime[i].Groups[1].ToString() + ": " + message.Groups[1].ToString() };
   i++;
   lbls.Add(lbl);
}
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
29.07.2015, 18:00  [ТС]
tob9l, я так полагаю должно быть так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
                    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                    StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
                    html = myStreamReader.ReadToEnd();
              /*  for (int i = 0; i < 10; i++)
                {
                    // Вытаскиваем из HTML-кода нужные данные
                    Match match = Regex.Match(html, pattern);
                    Match match2 = Regex.Match(html, pattern2);
                    Match match3 = Regex.Match(html, pattern3);
 
 
                    string login= String.Format("{1}\n", url, match.Groups[1].ToString());
                    string datetime = String.Format("{1}\n", url, match2.Groups[1].ToString());
                    string message = String.Format("{1}\n", url, match3.Groups[1].ToString());
 
                    listBox2.Items.Add(login + "  " + datetime + "  " + message);
                }//label1.Text = login + "" + datetime + "" + message;
                */
                
                int i = 0;
var logins = Regex.Matches(html, pattern);
var sendedTime = Regex.Matches(html, pattern2);
var messages = Regex.Matches(html, pattern3);
var lbls = new List<Label>();
foreach (var message in messages)
{
   var lbl = new Label() { Text = logins[i].Groups[1].ToString() + " " + sendedTime[i].Groups[1].ToString() + ": " + message.Groups[1].ToString() };
   i++;
   lbls.Add(lbl);
}
у меня ошибка тут
C#
1
 var lbl = new Label() { Text = logins[i].Groups[1].ToString() + " " + sendedTime[i].Groups[1].ToString() + ": " + message.Groups[1].ToString() };
е было + возле sendedTime я поставил теперь идет так
"object" не содержит определение для "Groups". Не удалось найти метод расширения "Groups", принимающий первый аргумент типа "object" (пропущена директива using или ссылка на сборку?) (CS1061) - D:\MMChat2\MMChat2\Form1.cs:88,126
Добавлено через 1 час 6 минут
Переделал под ListBox допилил
C#
1
 " + message.Groups[1].ToString() };
теперь
C#
1
 " + messages[i].Groups[1].ToString() };
но при запуске пишет типа ошибки про выход за пределы и типа вся ошибка в i, так же не показует почему то последнее сообщение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2015, 18:00

Возврат определенного количества записей в заданном интервале
Доброго времени суток. var result = from u in projects where...

Информирование пользователя о достижении набора определенного количества записей
Здравствуйте! Подскажите пожалуйста, как методом VBA реализовать следующий механизм.: По сути дела. Есть некая форма, перечень деталей, в...

Вывести число, сформированное на основании количества записей определенной рубрики (рубрик) и определенного тега (тегов)
Всем привет! Мне необходимо вывести число, сформированное на основании количества записей определенной рубрики (рубрик) и определенного...

Вывод определенного количества результатов
Здравствуйте! Подскажите, как сделать так, что бы по запросу можно было выводить определенное количество элементов начиная с нужного? То...

LIMIT вывод определенного количества
Здравствуйте. Прикладываю скрин-шот. Мне необходимо выбрать данные у пользователя ID 8 и ID 6, то есть я выбираю так SELECT ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru