Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
7 / 7 / 3
Регистрация: 18.12.2011
Сообщений: 137

Распарсить страницу в Интернете для получения IP, региона и т.д

28.11.2012, 16:04. Показов 1248. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Начал учиться составлять регулярные выражения. Не буду писать тут все сразу, только по мере возникновения вопросов или когда что-то получаться не будет.

Делаю для начала парсинг с http://internet.yandex.ru
Нужно вытащить от туда айпи, браузер и регион.
Начал с айпи
HTML5
1
2
3
4
5
6
7
8
                                </div>
                                <noindex>
                                    <div class="b-info__item b-info__item_type_ip">
                                        
                                            Мой IPv4: 11.111.11.11
                                            <span id="js-ipv6" class="i-hidden"><br>Мой IPv6: <span id="js-ipv6-value"></span></span>
                                        
                                    </div>
запрашиваю данные страницы ив internet находиться ее содержание
нашел вот такой способ
C#
1
2
textBox_ip.Text = new Regex(@"Мой IPv4:(?<ip>[^<]+)<span id=""js-ipv6""")
                    .Match(internet).Groups["ip"].Value;
в текстбокс выводит айпи, только еще плюс длинную строку, как понимаю из за того что у них на странице айпи находится на одной строчке а мое регулярное выражение берет все символы.
подскажите пожалуйста как можно это исправить?

на форуме писали тут что вот такое выражение
(??:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
найдет адрес в правильном диапазоне, как можно его использовать в данном случае?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2012, 16:04
Ответы с готовыми решениями:

Распарсить страницу для получения ссылки
здравствуйте, подскажите пожалуйста как из html кода вытащить ссылку которая идёт после src? &lt;div class=&quot;&quot;...

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

Распарсить HTML страницу для получения теста между тегами
Собственно проблема заключается в том что не получается спарсить текст между тэгов, пробовал все возможные способы. Есть html код: ...

6
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
28.11.2012, 16:39
Цитата Сообщение от Колямбий Посмотреть сообщение
найдет адрес в правильном диапазоне, как можно его использовать в данном случае?
Подставить перед [^<]+ в вашем выражении, а [^<]+ вынести из группы ip
1
7 / 7 / 3
Регистрация: 18.12.2011
Сообщений: 137
28.11.2012, 16:47  [ТС]
turbanoff, спасибо, сделал вот так, работает
C#
1
2
textBox_ip.Text = new Regex(@"Мой IPv4: (?<ip>(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))")
                    .Match(internet).Groups["ip"].Value;
если можно вопрос, зачем в регулярных выражениях используются пассивные группы "?:..."?
и что обозначают знаки вопроса в "[01]?[0-9][0-9]?"?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
28.11.2012, 16:59
Вот здесь вы найдете ответы на все вопросы - Регулярные выражения FAQ, http://ru.wikipedia.org/wiki/Регулярные_выражения
1
7 / 7 / 3
Регистрация: 18.12.2011
Сообщений: 137
28.11.2012, 17:28  [ТС]
turbanoff, немного не понял почему используется "25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?" а не диапазон [0-255]?

Добавлено через 22 минуты
нужна помощь, парсю http://www.cbr.ru
нахожу курс доллара и евро на текущую дату
C#
1
textBox_z.Text = new Regex(@"<td class=""digit"" align=""right"">(?<z>.*)&nbsp;</td>").Match(kurs).Groups["z"].Value;
находит курс доллара но курс евро так же находится между <td class=""digit"" align=""right""> и &nbsp;</td>
подскажите как можно сделать что бы сначала получать доллар а потом уже евро?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
28.11.2012, 17:54
У ЦБР есть замечательный XML API - http://www.cbr.ru/scripts/Root.asp?Prtid=DWS
Цитата Сообщение от Колямбий Посмотреть сообщение
немного не понял почему используется "25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?" а не диапазон [0-255]?
потому-что это диапазон значений символов, а не чисел. Значит [0-255] будет содержать следующие символы: 0, 1, 2, 5
1
7 / 7 / 3
Регистрация: 18.12.2011
Сообщений: 137
28.11.2012, 18:32  [ТС]
turbanoff, пока нужно без xml
можно в регулярном выражении задать так, чтобы до <td class=""digit"" align=""right""> еще присутствовало нужно слово, например "Доллар"?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2012, 18:32
Помогаю со студенческими работами здесь

Распарсить HTML страницу для получения теста между тегами
Всем доброго времени суток. Имеется вот такой веб код, который я &quot;спарсил&quot; с со страницы : -0px...

Распарсить строку для получения числа
Учусь только писать коды, по этому буду благодарен за помощь. Dim value As String =...

Распарсить строку для получения подстроки даты
В текстбоксе1 есть текст: &quot; Текст &quot; И он каждый раз меняется. На текстбокс2 вывести нужно только &quot;08-23-2014&quot; Как это...

Распарсить HTML для получения тегов div
мне нужно получить информацию внутри тега &lt;div id=&quot;news_text&quot; class=&quot;news_text&quot;&gt;текст&lt;/div&gt;. тег находится внутри других тегов див как...

Распарсить строку для получения значения в кавычках
Здравствуйте... Использую textBox для ввода данных. Ввод может быть такого типа: Number=&quot;500&quot; Gty=&quot;1278&quot; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru