-1

Как достать ссылку?

<h2><a href="http://www.ibby.org/index.php?id=266" h="ID=SERP,5077.1">
  • Распарсить HTML.из которого вы с кровью выдрали эту строчку, парсером? – VladD Feb 10 '16 at 16:01
  • Вот код парсинга http://prntscr.com/a1hgcz Как оттуда распарсить ссылку? – Roman Kravets Feb 10 '16 at 16:13
  • Жесть какая-то на скриншоте... Что там пробелы и переводы строк делают? – Qwertiy Feb 10 '16 at 16:39
  • По примеру с хабра – Roman Kravets Feb 10 '16 at 16:51
  • 2
    Не плодите одинаковые вопросы: http://ru.stackoverflow.com/questions/491063/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3%D0%B0-%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA – Raider Feb 10 '16 at 18:09
  • Ответы совсем не одинаковые – Roman Kravets Feb 10 '16 at 18:42

3 Answers3

1

Не используйте регулярные выражения для парсинга HTML (где-то на сайте был отличный перевод этого ответа на русский, но я не могу его найти). Используйте Html Agility Pack:

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
    Console.WriteLine(link["href"]);
}

Ну а если очень хочется, то такие вопросы уже были: раз и два.

andreycha
  • 25,167
  • 4
  • 46
  • 82
  • DocumentElement - в библиотеке такого нет Сделал вот так: http://prntscr.com/a1ihqj , но ссылку не вытягивает. – Roman Kravets Feb 10 '16 at 17:25
  • Перепробовал те примеры что есть на сайте, но никак не вытягивает ссылку. – Roman Kravets Feb 10 '16 at 17:32
  • Подскажите как правильно сделать "//a[@href]" чтобы мне выбирало именно между тегами

    – Roman Kravets Feb 10 '16 at 17:48
  • @RomanKravets брал пример из документации, но видимо она устарела. Рад, что разобрались сами. – andreycha Feb 10 '16 at 19:01
  • Andreycha помогите с комментарием выше. – Roman Kravets Feb 10 '16 at 19:30
0

Решилось вот таким способом.

                        HtmlDocument doc = new HtmlDocument();
                    doc.LoadHtml(sourcePage);

                    HtmlNodeCollection nodes = doc
                                .DocumentNode
                                .SelectNodes("//a[@href]");

                    foreach (HtmlNode node in nodes)
                    {
                        links.Add(node.GetAttributeValue("href", null));
                    }
0
using HtmlAgilityPack;

private HtmlDocument DownloadDocument()
{
  System.Net.WebClient web = new System.Net.WebClient();
  web.Encoding = UTF8Encoding.Default;
  string str = web.DownloadString("Ваш url");
  HtmlAgilityPack.HtmlDocument doc = new HtmlDocument();
  doc.LoadHtml(str);
  return doc;
}
private void get_url()
{
  HtmlDocument document = DownloadDocument();
  if (document != null){
  var url = document.DocumentNode.SelectNodes("//h2/a[@href]");
  foreach (var c in url)
  {
    HtmlAttribute at = c.Attributes["href"];
    textBox1.Text += at.Value + Environment.NewLine;
  }
 }
}
Little Fox
  • 594
  • 4
  • 19