Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения, Застрял немного 
V
    Опции темы
Desperion
Дата 31.1.2012, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 23.11.2007
Где: Уфа

Репутация: нет
Всего: 3



Недавно начал осваивать парсинг и работу с регулярными выражениями smile
Ради интереса решил сделать парсинг тегов с известного ресурса хабрахабр

Пример:
Код

<ul class="tags">
    <li ><a href="http://habrahabr.ru/tag/asp.net/" rel="tag">asp.net</a></li><li >, 
               <a href="http://habrahabr.ru/tag/asp.net mvc/" rel="tag">asp.net mvc</a></li><li >, 
               <a href="http://habrahabr.ru/tag/asp.net webforms/" rel="tag">asp.net webforms</a></li><li >, 
               <a href="http://habrahabr.ru/tag/visual studio/" rel="tag">visual studio</a></li><li >, 
                <a href="http://habrahabr.ru/tag/вебинары/" rel="tag">вебинары</a></li>
</ul>

Никак не получается составить выражение чтобы вытащить все эти теги хотя бы в массив (в дальнейшем планируется заносить в БД)
Подскажите пожалуйста, как этого добиться?smile Возможно стоит попробовать другой способ парсинга, буду очень рад любой помощи smile
Спасибо.
PM MAIL WWW ICQ Skype   Вверх
diadiavova
Дата 31.1.2012, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(Desperion @  31.1.2012,  11:05 Найти цитируемый пост)
Возможно стоит попробовать другой способ парсинга

 smile 
http://htmlagilitypack.codeplex.com/


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Desperion
Дата 31.1.2012, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 23.11.2007
Где: Уфа

Репутация: нет
Всего: 3



Спасибо большое за ссылочку smile
Получается, что в данном случае, получить тэги с помощью регулярок нет возможности?
PM MAIL WWW ICQ Skype   Вверх
diadiavova
Дата 31.1.2012, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(Desperion @  31.1.2012,  12:38 Найти цитируемый пост)
Получается, что в данном случае, получить тэги с помощью регулярок нет возможности? 

Есть, но это не лучший способ.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
502
Дата 31.1.2012, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Я всегда прав
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 16.7.2011

Репутация: нет
Всего: 4



Цитата(Desperion @  31.1.2012,  10:05 Найти цитируемый пост)
Никак не получается составить выражение чтобы вытащить все эти теги хотя бы в массив

как пробовал?
PM MAIL   Вверх
Desperion
Дата 31.1.2012, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 23.11.2007
Где: Уфа

Репутация: нет
Всего: 3



Один из неудачных примеров :
Код

<a.*rel=""tag"">(?<temp>.*)</a>

крутил вертел по всякомуsmile читал в гугле примеры, пробовал, экспериментировал, но что то не выходит пока что smile сейчас буду читать материалы по ссылке выше smile
PM MAIL WWW ICQ Skype   Вверх
diadiavova
Дата 31.1.2012, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(Desperion @  31.1.2012,  12:49 Найти цитируемый пост)
<a.*rel=""tag"">(?<temp>.*)</a>

Если это немного подправить, то работать все таки будет
Код

var re = new Regex(@"<a\s+[^>]*rel=""tag"">(?<temp>.*)</a>");


Добавлено через 56 секунд
Но это никак не меняет того факта, что это не лучший способ smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Desperion
Дата 31.1.2012, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 23.11.2007
Где: Уфа

Репутация: нет
Всего: 3



спасибо большое за подсказку и пример рабочий smile будем разбираться дальше
PM MAIL WWW ICQ Skype   Вверх
Desperion
Дата 31.1.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 23.11.2007
Где: Уфа

Репутация: нет
Всего: 3



Успех smile
Код

var Tags = new Regex(@"<a\s+[^>]*rel=""tag"">(?<temp>[^<]*)</a>");                    
                    Match m = Tags.Match(data);
                    while (m.Success)
                    {                        
                        Console.WriteLine(m.Groups["temp"].Value);
                        m = m.NextMatch();
                    }

Выводит
Цитата
asp.net
asp.net mvc
asp.net webforms
visual studio
вебинары


Это сообщение отредактировал(а) Desperion - 31.1.2012, 12:50
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0802 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.