![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
Скачиваю HTML и перевожу в String. Сам он довольно здоровый (~50кб). Подскажите как будет привильнее всего сделать (я в принцепе сделал, но больно плохо), чтоб вытащить с HTML определенные данные. Ниже я привел кусок HTML , как вы поняли мне нужно вытащить баланс, фамилию и т.д.
|
|||
|
||||
| Freak_FB |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: 1 Всего: 4 |
Я бы использовал регулярные выражения.
|
|||
|
||||
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
Freak_FB так как ты написал, скорее всего не получится, потому что я получаю строку во время выполнения программы. И весь HTML занимает 1500 строчек.
Это сообщение отредактировал(а) ilya_cska - 22.3.2008, 10:40 |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
ilya_cska, а почему не получится? = Единственно, HTML-код нужно получить в переменную str в любой момент выполнения программы, ессесно, до того, как прорабатывают регулярные выражения. Или сделать функцию :
Строчка HTML-кода, подаваемого функции должна лишь содержать тег <td>, либо же в одну строчку можно положить ВЕСЬ код (50кб - не так уж и много), но тогда выходные параметры имя-баланс-кредит должны стать массивами ( и из групп match-а значения доставать в массивы ). Это сообщение отредактировал(а) marcusmae - 22.3.2008, 11:58 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
Тут происходит как бы наложение строки на строку?
|
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
где? = в аргументе с out? = несовсем. Это - "аргумент на выход", который должен объявить вызывающий, а инициализировать вызываемый. Есть ещё ref - "аргумент по ссылке", который должен объявить и инициализировать вызывающий, а вызываемый _может_ его изменить, причём если изменит, то вызывающий об этом узнает. Подробнее - в MSDN. Если не то имели ввиду, то дайте сюда какой-нибудь полный текст HTML (из тех, с кот. Вы работаете) - может тогда удастся показать нагляднее. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
Если не то имели ввиду, то дайте сюда какой-нибудь полный текст HTML (из тех, с кот. Вы работаете) - может тогда удастся показать нагляднее.
Вот, ссылка на HTML. click Если открыть файл с помощью Notpad++ то информация, которую мне нужно вытащить, находится с 1275 строчке. |
|||
|
||||
| marcusmae |
|
||||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
ilya_cska, в классе User описана необходимая функциональность, связанная с пользователем. Помимо полей-только-для-чтения Name, Balance и Credit, есть конструктор, вывод сводной информации Summary и статическая функция для извлечения информации из текста HTML :
Оригинальный паттерн регулярного выражения Freak_FB пришлось слегка подредактировать для того, чтобы кредит по признакам не путался со следующими за ним записями. Рекомендую тщательно перепроверить его переносимость, протестировав на большом множестве реальных страниц. Рубли из строки переводятся в численное выражение, что может быть излишне, если не нужно с ними делать никакой арифметики. Вызов мог бы выглядеть так :
Открыли файл читателем и слили весь текст в одну строку. Далее обращаю внимание на крайне нежелательную (например, в плане скорострельности) операцию удаления из текста символов перевода каретки :
Компьютеры, конечно, железные, но могли бы - вздохнули бы горько Полный код программы присоединён. Это сообщение отредактировал(а) marcusmae - 23.3.2008, 21:09 Присоединённый файл ( Кол-во скачиваний: 2 )
Program.cs 3,74 Kb-------------------- ἀπὸ μηχανῆς θεός |
||||||
|
|||||||
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
marcusmae, мож глупый вопрос, а ты файл qwer.txt не исправлял? А то я код твой скачал, а программа выполняет условие
|
|||
|
||||
| marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
ilya_cska, нет, я ничего не исправлял. Изменим метод загрузки так, чтобы файл получался напрямую из урл (собсна, так сразу нужно было сделать) :
Результат :
Это сообщение отредактировал(а) marcusmae - 24.3.2008, 13:30 -------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
marcusmae скинь пожалуйста весь код, а то компилятор ругается.
|
|||
|
||||
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
Все сделал, только все равно пишет В указанном файле информации о пользователе не найдено
полный код
Это сообщение отредактировал(а) ilya_cska - 24.3.2008, 14:53 |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Уф, ну это мистификация
Посмотрите, какие у Вас могут возникнуть проблемы. На строковую переменную с текстом через отладчик, например, проверьте, что там всё в порядке с кириллицей и вообще с кодировкой. Успешно перенёс программку на другой компьютер, правда Program.cs пришлось пересохранить в UTF-8... Да вообще, за полдня-то уж можно было всю программу вдоль и поперёк отладчиком излазить - было бы на то Ваше желание. Это сообщение отредактировал(а) marcusmae - 24.3.2008, 16:51 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Может кому понадобиться: HTML to XHTML Conversion with SGMLReader.
|
|||
|
||||
| ilya_cska |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 25.1.2008 Репутация: нет Всего: нет |
Все, спасибо marcusmae.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |