Достаточно часто приходится сталкиваться с такой задачей, как получение сразу всех имеющихся на странице ссылок. Особенно остро он встает в том случае, если в 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;
}