Получение всех ссылок, имеющихся на странице

Получение всех ссылок, имеющихся на страницеДостаточно часто приходится сталкиваться с такой задачей, как получение сразу всех имеющихся на странице ссылок. Особенно остро он встает в том случае, если в html документе их имеется просто огромное количество. В принципе, данная ситуация решается довольно просто и не требует от программиста особых временных затрат и умственной деятельности. В качестве одного из возможных вариантов будет приведен дальнейший код. Он обладает довольно простой реализацией. Первоначально, необходимо получить код самой html страницы. Далее необходимо прибегнуть к помощи регулярных выражений, обеспечивающих выделение из кода необходимых ссылок, представляемых в наиболее удобном виде. В принципе, в получении html кода страницы нет ничего сложного, и для этого используется специализированная функция. В приведенном примере описывается оптимальная ситуация получения ссылок. Приведенной функцией возвращается не обычный массив. В остальном, ее работа имеет много общего с самым обыкновенным массивом. Таким образом, все имеющиеся на станице ссылки оказываются в полном распоряжении пользователя программы.

public ArrayList GetAllLinks(string SourceHTML)
{
ArrayList Links = new ArrayList();
Match m;
string HRefPattern = @»(?i)<\s*?a\s+[\S\s\x22\x27\x3d]*?href=[\x22\x27]?([^\s\x22\x27<>]+)[\x22\x27]?.*?>»;
m = Regex.Match(SourceHTML, HRefPattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
while (m.Success)
{
Links.Add(m.Groups[1].Value);
m = m.NextMatch();
}
return Links;
}

Категория: C#
Вы можете следить за комментариями с помощью RSS 2.0 ленты. Вы можете оставить комментарий, или трекбек с вашего сайта.
Оставить комментарий

XHTML: Вы можете использовать теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>