Приветствую всех! Сегодня хочу продемонстрировать пример того как можно отпарсить интернет страницу. В примере ниже будет строка содержащая теги html, мы воспользуемся регулярными выражениями и выведем все ссылки из текста:
string input = "";
input+="Тут у нас может быть любой текс <a href ='http://nookery.ru'>Home-page</a> Который не имеет значения.";
input += "Это могут и быть как разметка, так и разные атрибуты html <a href ='http://nookery.ru'>Search</a> Нашей целью";
input += "Показать пример того как <a href ='http://yandex.ru'>ya</a> Можно выдернуть ссылки из страници";
var regex = new Regex(@"<a href ='(?<link>\S+)'>(?<text>\S+)</a>");
Console.WriteLine(input);
for(Match m=regex.Match(input);m.Success;m=m.NextMatch())
{
Console.WriteLine("Ссылка: {0,-25} на:{1,-4} позиция с именем: {2}", m.Groups["link"],
m.Groups["link"].Index,
m.Groups["text"]);
}
Console.WriteLine(new string('-', 25));
foreach(Match m in regex.Matches(input))
{
Console.WriteLine("Ссылка: {0,-25} на:{1,-4} позиция с именем: {2}", m.Groups["link"],
m.Groups["link"].Index,
m.Groups["text"]);
}
Console.WriteLine(new string('-', 25));
var htmlQuery = from Match m in regex.Matches(input)
where m.Groups["link"].Value.StartsWith("http:")
select m;
foreach(var m in htmlQuery)
{
Console.WriteLine("Ссылка: {0,-25} на:{1,-4} позиция с именем: {2}", m.Groups["link"],
m.Groups["link"].Index,
m.Groups["text"]);
}
В примере выше представлены, три варианта того как это можно сделать, какой из предложенных вариантов воспользуетесь вы, решать вам!
