С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
8 / 8 / 6
Регистрация: 17.06.2013
Сообщений: 140
1

Парсинг html: получить значение между тегами <a></a>

01.05.2014, 18:17. Показов 3588. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я вот хочу написать парсер, наткнулся на код и он получал атрибуты href, я хотел получить значение между <a></a>
Написал вот это :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
            wClient = new WebClient();
            wClient.Proxy = null;
            wClient.Encoding = encode;
 
            var doc = new HtmlDocument();
            doc.LoadHtml(wClient.DownloadString("http://dota2.ru/heroes/"));
            var listsNode = doc.DocumentNode.SelectNodes("//div[@class='list']");
 
            foreach (HtmlNode s in listsNode)
            {
                foreach (HtmlNode aNode in s.ChildNodes)
                {
                    if (aNode.Name == "a")
                    {                       
                            Console.WriteLine(aNode.InnerText);                      
                    }
                }
            }
 
            Console.ReadKey();
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
01.05.2014, 18:17
Ответы с готовыми решениями:

Получить текст между тегами HTML
Как получить весь текст между тегами (&lt;div class=&quot;msg&quot;&gt; Текст.... &lt;br&gt; ....магия &lt;/div&gt;)

Получить весь текст HTML-страницы, который находится между тегами, кроме заголовка
Здравствуйте, возникла задача отпарсить html. Конкретно, взять весь текст, который находится между...

Парсинг между двумя тегами Html
Доброго времени суток. Уверен, на форуме было не мало подобных тем, но определенно этого запроса не...

Как получить часть подстроки между двумя html-тегами?
Здравствуйте! Подскажите пожалуйста, как из этой строки &lt;TITLE&gt;Отчёт: &amp;lt;OMT-NEW&amp;gt;&lt;/TITLE&gt;...

8
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.05.2014, 18:28 2
Это работает? DocumentNode разве не к XML относится?
0
8 / 8 / 6
Регистрация: 17.06.2013
Сообщений: 140
01.05.2014, 18:30  [ТС] 3
ну именно код выше не работает, но код который получал значение атрибутов он работал
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
01.05.2014, 18:48 4
Ты Html Agility Pack, что ли, используешь?
0
8 / 8 / 6
Регистрация: 17.06.2013
Сообщений: 140
01.05.2014, 18:57  [ТС] 5
да именно его
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
01.05.2014, 19:13 6
summerokk, XPath: "//div[@class='list']/a". Эти теги не содержат текста, поэтому innertText "пустой". Определитесь, что хотите спарсить, вот первый из тегов <a>:
HTML5
1
2
3
4
<a href="http://dota2.ru/heroes/earthshaker/" data-role=" - Initiator - Disabler - Support - Lane Support" data-attack-type="melee">
    <img src="http://dota2.ru/img/heroes/earthshaker/icon.jpg"/>
    <div class="hidden" data-name="Earthshaker" data-attack-type="Ближний бой" data-role=" - Initiator - Disabler - Support - Lane Support"/>
</a>
0
8 / 8 / 6
Регистрация: 17.06.2013
Сообщений: 140
01.05.2014, 19:30  [ТС] 7
тогда получается мне надо значение div который внутри
0
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
01.05.2014, 20:25 8
summerokk, ну так ведь и он внутри пуст. Собственно, спарсить можно как-то:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static List<dynamic> DownloadHeroes()
{
    var wc = new WebClient() { Encoding = Encoding.UTF8 };
    var doc = new HtmlDocument();
    doc.LoadHtml(wc.DownloadString("http://dota2.ru/heroes/"));
    var nodes = doc.DocumentNode.SelectNodes("//div[@class='list']/*/div[@data-name]");
 
    return nodes.Select(node => new
        {
            Name = node.Attributes["data-name"].Value,
            AttackType = node.Attributes["data-attack-type"].Value,
            DataRole = node.Attributes["data-role"].Value
                .Split(new char[] { ' ', '-' }, StringSplitOptions.RemoveEmptyEntries)
        }).ToList < dynamic>();
}
 
var heroes = DownloadHeroes();
foreach (var hero in heroes)
{
    Console.WriteLine("{0}\nТип атаки: {1}\nРоль: {2}\n", 
        hero.Name, hero.AttackType, String.Join(", ", hero.DataRole));
}
1
8 / 8 / 6
Регистрация: 17.06.2013
Сообщений: 140
01.05.2014, 21:32  [ТС] 9
а вот если бы он не был пустой тогда как спарсить?
0
01.05.2014, 21:32
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
01.05.2014, 21:32
Помогаю со студенческими работами здесь

Получить значение заключенное между тегами <li></li>
Необходимо написать регулярку которая получит содержимое заключенное между тегами &lt;li...

Парсинг текста между тегами <b></b>
В веб браузере delphi загружена страница как достать все Элементы в теге &lt;b&gt;1204884&lt;/b&gt;...

Парсинг текста между тегами <td> и </td>
На странице есть несколько сотен элементов, отбирающихся по селектору...

Парсинг текста между тегами <td> и </td>
Решил написать программу для работы с базой. Достал html код в richTextBox1. Нужные мне значения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru