Как извлечь атрибут html tag? - PullRequest
0 голосов
/ 10 июля 2011

Я пытаюсь разработать свой первый агрегатор RSS-новостей.Я могу легко извлечь ссылки, заголовки, дату публикации из объекта RSSItem.Тем не менее, мне трудно извлечь изображение из фида Item.К сожалению, из-за моей низкой репутации SO я не могу загружать изображения, поэтому вместо того, чтобы помочь мне извлечь значение атрибута src <img>, вы можете показать мне, как получить значение атрибута href attr <a> тег.Сильно оценен !!

Вот строка

<div style="text-align: center;"
    <a href="http://www.engadget.com/2011/07/10/element5s-mini-l-solarbag-brings-eco-friendly-energy-protectio/"></a>
</div>

Редактировать:

Возможно, весь заголовок неверен.Есть ли способ найти значение с помощью XPath?

1 Ответ

2 голосов
/ 10 июля 2011

Используйте HTMLAgilityPack, как ответили в этом сообщении:

Как получить значения из тегов HTML?

Дополнительная информация:

HTML может быть неправильно сформирован, поэтому нам нужен другой синтаксический анализатор (кроме XML, поставляемого в .net), который более отказоустойчив. Вот тут и приходит HTMLAgilityPack.

Начало работы:

  1. создать новое консольное приложение

  2. щелкните правой кнопкой мыши ссылки / управляйте пакетами nuget (установите NuGet, если у вас его нет).

  3. добавить гибкость html

Рабочий пример:

        using System;
        using System.IO;
        using System.Text;
        using HtmlAgilityPack;

        namespace ConsoleApplication4
        {
            class Program
            {
                private const string html = 
        @"<?xml version=""1.0"" encoding=""ISO-8859-1""?>
        <div class='linkProduct' id='link' anattribute='abc'/>
         <bookstore>
         <book>
           <title lang=""eng"">Harry Potter</title>
           <price>29.99</price>
         </book>
         <book>
           <title lang=""eng"">Learning XML</title>
           <price>39.95</price>
         </book>
         </bookstore>
        ";

                static void Main(string[] args)
                {
                    HtmlDocument doc = new HtmlDocument();
                    byte[] byteArray = Encoding.ASCII.GetBytes(html); MemoryStream stream = new MemoryStream(byteArray);
                    var ts = new MemoryStream(byteArray);
                    doc.Load(ts);
                    var root = doc.DocumentNode;
                    var tag = root.SelectSingleNode("/div");
                    var attrib = tag.Attributes["anattribute"];
                    Console.WriteLine(attrib.Value);
                }
            }
        }

Далее:

Добейтесь успеха в XPaths. Вот хорошее место для начала.

http://www.w3schools.com/xpath/xpath_syntax.asp

...