Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2011, 18:50   #1
Lazio
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 113
По умолчанию Парсер ссылок HTML

Вот выпиливаю из страниц ссылочки. И встал вопрос в плане алгоритма. Как наиболее лучше из тега <a> достать ссылки, а также как это сделать в нескольких потоках для ускорения процесса?
Lazio вне форума Ответить с цитированием
Старый 15.07.2011, 18:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ссылки можно доставать через регулярные выражения.

Цитата:
сделать в нескольких потоках для ускорения процесса?
а что, в одном потоке медленно получается?..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2011, 18:53   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)довольно хорошо подходят регулярки, пример есть в MSDN.
2)ну значит несколько страниц и соответственно каждой странице по потоку(ну или не каждой странице, решение ваше)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.07.2011, 20:30   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Код:
public string[] ExtractURLs(string str)
{
    // match.Groups["name"].Value - URL Name
    // match.Groups["url"].Value - URI
    string RegexPattern = @"<a.*?href=[""'](?<url>.*?)[""'].*?>(?<name>.*?)</a>"

    // Find matches.
    System.Text.RegularExpressions.MatchCollection matches
        = System.Text.RegularExpressions.Regex.Matches(str, RegexPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);

    string[] MatchList = new string[matches.Count];

    // Report on each match.
    int c = 0;
    foreach (System.Text.RegularExpressions.Match match in matches)
    {
        MatchList[c] = match.Groups["url"].Value;
        c++;
    }

    return MatchList;
}
Hollander вне форума Ответить с цитированием
Старый 14.09.2015, 21:15   #5
specialist_
 
Регистрация: 14.12.2012
Сообщений: 4
По умолчанию

Посмотрите в сторону Html Agility Pack
я собрал все что мне помогло по теме здесь
PS профессионалы не рекомендуют использовать для этих задач регулярные выражения (Внеклассное чтение)
specialist_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсер HTML страницы kardinal94 Работа с сетью в Delphi 1 21.08.2010 13:06
Мне бы прогу (парсер html) CEBEPok Фриланс 11 30.07.2010 22:14
Парсер из HTML в CSV. OJI HTML и CSS 5 09.09.2009 19:59
xpath html парсер volok-aleksej Qt и кроссплатформенное программирование С/С++ 0 19.05.2009 16:17
парсер (сбор ссылок с сайта) AlexMenco Фриланс 9 24.02.2009 19:39