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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2015, 10:53   #1
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию html agility pack. парсинг.

Доброго времени суток, разбираюсь с парсом. Столкнулся с такой проблемой. Имеется html, где содержится вот такой div:
Код:
<div class="text"><a href="/ololo/20150818/1192434950.html">Тексттексттексттексттексттекст<strong class="arrow"></strong></a></div>
Мне нужно вытащить ссылку из этого div'а (/ololo/20150818/1192434950.html).
Делаю так:
Код:
HtmlNode c = page.DocumentNode.SelectSingleNode(".//div[@class='text']");
            if (c != null)
            {
                Console.WriteLine(c.Attributes[0].Value);
                Console.ReadKey();
            }
Нахожу div, но не понимаю как дальше средствами библиотеки извлечь оттуда содержимое <a href="/ololo/20150818/1192434950.html">. Помогите разобраться. Заранее благодарю за любой ответ.
FULEREN вне форума Ответить с цитированием
Старый 18.08.2015, 11:34   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
.Attributes["href"].Value
Только зачем вам div, если вам a нужен?
Код:
//div[@class='text']/a
или например так:
Код:
//a[contains(@href, '/ololo/')]
Код:
//a[contains(text(), 'Тексттексттексттексттексттекст')]


Вообще
Код:
@class='someClass'
редко когда подходит, ибо редко бывает, что у элемента всего 1 класс, и
Код:
@class='someClass someClass1 ... someClass100500'
тоже плохой вариант, ибо порядок может быть разным + бывает другие классы добавляются/удаляются в зависимости от условий
Лучше так http://stackoverflow.com/questions/1...ass-with-xpath
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.08.2015, 11:42   #3
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию

Я бы сделал так, но то, что на месте ololo всегда разное, так же как и текст.
Код:
//a[contains(@href, '/ololo/')]
Код:
//a[contains(text(), 'Тексттексттексттексттексттекст')]
FULEREN вне форума Ответить с цитированием
Старый 18.08.2015, 11:52   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну первый вариант значит.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.08.2015, 11:54   #5
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию

Код:
 Console.WriteLine(c.Attributes["href"].Value);
- Ссылка на объект не указывает на экземпляр объекта.
FULEREN вне форума Ответить с цитированием
Старый 18.08.2015, 12:02   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
            string html =
                "<div class=\"text\"><a href=\"/ololo/20150818/1192434950.html\">Тексттексттексттексттексттекст<strong class=\"arrow\"></strong></a></div>";

            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(html);

            var linkNode = htmlDoc.DocumentNode.SelectSingleNode("//div[@class='text']/a");

            Console.WriteLine(linkNode.Attributes["href"].Value);
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.08.2015, 12:14   #7
FULEREN
Пользователь
 
Регистрация: 23.03.2012
Сообщений: 56
По умолчанию

Большое спасибо. Проблема решена.
FULEREN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг таблицы с помощью Html Agility Pack No_Comments C# (си шарп) 10 07.12.2013 19:25
Вопрос по Html Agility Pack C# No_Comments Помощь студентам 4 01.12.2013 14:40
Парсинг html... kta87 Общие вопросы Delphi 3 06.04.2012 12:13
парсинг Html djetx Общие вопросы Delphi 3 01.08.2011 18:56
Парсинг HTML Che Guevara PHP 4 21.07.2011 19:28