Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 14.07.2016
Сообщений: 5
.NET 4.x

Парсинг страницы

14.07.2016, 15:19. Показов 902. Ответов 1

Студворк — интернет-сервис помощи студентам
Я не очень опытен, поэтому извиняйте, если написал полнейший бред.
Есть некая страница. С неё нужно получить 3 значения, изменяющихся динамически. Также, эти значения могут отсутствовать. Значения записаны в трёх элементах:
HTML5
1
2
3
<div class="scoreboard-ctScore" data-reactid=".0.0.1.0">7</div>
<div class="scoreboard-tScore" data-reactid=".0.0.1.2">11</div>
<div style="text-align:left;" data-reactid=".0.1.0.0.1">Mongolia</div>
Элементы на странице не повторяются.
Порылся по форумам, нашёл вариант с регулярными выражениями, но он выдаёт ArgumentOutOfRangeException
Я думаю, это из - за очень большого объёма страницы.
Сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 HttpWebRequest req;
            HttpWebResponse resp;
            StreamReader sr;
            string content;
 
            req = (HttpWebRequest)WebRequest.Create(textBox1.Text);
            resp = (HttpWebResponse)req.GetResponse();
            sr = new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding("windows-1251"));
            content = sr.ReadToEnd();
            sr.Close();
            textBox2.Text = content;
            string findStr1 = "<div class=\"scoreboard - ctScore\" data-reactid=\".0.0.1.0\">";
            string findStr2 = "</div>";
           int input1 = content.IndexOf(findStr1);
            int input2 = content.IndexOf(findStr2, input1);//здесь возникает исключение
            string match;
            if (input1 > -1 && input2 > -1)
            {
                match = content.Substring(input1 + findStr1.Length, input2 - (input1 + findStr1.Length));
                match = match.Trim();
                textBox3.Text = match;
            }
            else textBox3.Text = "no";
textbox1 - сюда я ввожу ссылку на страницу
textbox2 - здесь появляется html - код страницы
textbox3 - сюда выводится единственная циферка
Знаю, что можно использовать HtmlAgilityPack, но не разобрался, как с ним работать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.07.2016, 15:19
Ответы с готовыми решениями:

Парсинг страницы
Вообщем есть ссылка http://vk.com/wall-&quot;+ ID группы/+&quot;?own=1 Пример http://vk.com/wall-1234567?own=1 ...

Парсинг страницы
Помоги пожалуйста, как правильно спарсить информацию (В красной области). Страница сайта:...

Парсинг интернет страницы
Доброго времени суток! Я начал коллекционировать различную пивную атрибутику, у меня есть куча ссылок на пивоварни Германии, как спарсить...

1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
14.07.2016, 16:39
Цитата Сообщение от Alexey Lisov Посмотреть сообщение
нашёл вариант с регулярными выражениями, но он выдаёт ArgumentOutOfRangeException
Я думаю, это из - за очень большого объёма страницы. Сам код:
В приведенном примере не используются регулярные выражения. Исключение возникает из-за того что int input1 = content.IndexOf(findStr1); возращает -1, которая передается в следующий вызов IndexOf. Нужно сразу проверять на -1. Почему он не находит строку можно только гадать. Нужно посмотреть что записано в переменной content.

Цитата Сообщение от Alexey Lisov Посмотреть сообщение
Знаю, что можно использовать HtmlAgilityPack, но не разобрался, как с ним работать.
Вот так:
C#
1
2
3
4
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(content);
var node = htmlDoc.DocumentNode.SelectSingleNode("//div[@class='scoreboard - ctScore'][@data-reactid='.0.0.1.0']");
textBox3.Text = node == null ? "no" : node.InnerText.Trim();
Методу SelectSingleNode передается т.н. XPath выражение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2016, 16:39
Помогаю со студенческими работами здесь

Парсинг страницы с вебсокетом
Есть страница, которая как я понял грузит контент через вебсокеты (адрес вида wss://) И мне необходимо ее распарсить. Как я понял...

Парсинг страницы. Ошибка 401
Задача: получить в Response данные из таблицы на этой странице: ссылка. Посмотрел все запросы при загрузке сайта и нужен, похоже,...

Парсинг изображения со страницы сайта
Пытаюсь вывести изображение со страницы сайта в форму программы. Трудность заключается в том, что нет точной ссылки на изображение и оно...

Парсинг html кода страницы
Допустим есть некая страница, у которой html &lt;head&gt; &lt;body&gt; &lt;b&gt;ololo&lt;/b&gt; &lt;/body&gt; &lt;/head&gt; мне нужно, поставить if loop...

Некорректный парсинг html страницы
Добрых времени суток. По этому адресу тык нужно выбрать все что находится в теге &lt;div class=&quot;market_listing_buy_button&quot;&gt;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru