none
Работа с HTML данными. RRS feed

  • Вопрос

  • Доброе время соток. Как мне с вот этой 

    <a tabindex="5" class="Hello_World" href="http://www.site.com</a>

    HTML строки вытащить данный.

    Я патался вот таким способом, но у меня ничего не вышло.

    Dim ifcol As HtmlElementCollection = WB1.Document.GetElementsByTagName("a") For Each wl As HtmlElement In ifcol dim a as string =wl.GetAttribute("tabindex") dim b as string =wl.GetAttribute("class")

    if a = "5" and b = "Hello_World" Then

    dim c as string = wl.GetAttribute("href")

    end if Next





    • Изменено Alex 111 20 февраля 2012 г. 22:48
    20 февраля 2012 г. 19:41

Ответы

  • Попробуй так:

    dim b as string =wl.GetAttribute("className")

    Кроме этого у тебя адрес сайта не закрыт кавычками

    href="http://www.site.com<???? тут></a>

    Может из-за этого не работать.

    • Изменено ulcerModerator 21 февраля 2012 г. 6:17
    • Предложено в качестве ответа Abolmasov Dmitry 21 февраля 2012 г. 6:35
    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:48
    21 февраля 2012 г. 6:15
    Модератор
  • > HTML строки вытащить данный. Я патался вот таким способом, но у меня ничего не вышло. [...] wl.GetAttribute("class")


    вместо .GetAttribute("class") надо указать .GetAttribute("className") 
    или ((dynamic)a.DomElement).attributes.item("class").value;

    using System.Windows.Forms;
    
    namespace WindowsFormsApplication4
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                var html = @"
                    <a tabindex='5' class='Hello_World' href='http://www.site.com'>Site</a>
                    <a href='http://www.site1.com'>Site1</a>";
                var wb = new WebBrowser { Parent = this, Dock = DockStyle.Fill, DocumentText = html };
                
                this.Menu = new MainMenu();
                this.Menu.MenuItems.Add("Test", delegate { Test(wb); });
            }
    
            private static void Test(WebBrowser wb)
            {
                foreach (HtmlElement a in wb.Document.GetElementsByTagName("A"))
                {
                    var ti = a.GetAttribute("tabindex");
                    var cn = a.GetAttribute("className");  // или: ((dynamic)a.DomElement).attributes.item("class").value;
                    if (ti == "5" && cn == "Hello_World")
                    {
                        var href = a.GetAttribute("href");
                        MessageBox.Show(href);
                        break;
                    }
                }
            }
        }
    }
    

    • Изменено Malobukv 21 февраля 2012 г. 9:07
    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:48
    21 февраля 2012 г. 9:04

Все ответы

  • Попробуй так:

    dim b as string =wl.GetAttribute("className")

    Кроме этого у тебя адрес сайта не закрыт кавычками

    href="http://www.site.com<???? тут></a>

    Может из-за этого не работать.

    • Изменено ulcerModerator 21 февраля 2012 г. 6:17
    • Предложено в качестве ответа Abolmasov Dmitry 21 февраля 2012 г. 6:35
    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:48
    21 февраля 2012 г. 6:15
    Модератор
  • Здравствуйте.

    Если вам много нужно парсить html, то тогда стоит посмотреть в сторону библиотеки Html Agility Pack . С ней это можно будет делать быстрее и удобнее.


    Для связи [mail]

    21 февраля 2012 г. 6:35
  • > HTML строки вытащить данный. Я патался вот таким способом, но у меня ничего не вышло. [...] wl.GetAttribute("class")


    вместо .GetAttribute("class") надо указать .GetAttribute("className") 
    или ((dynamic)a.DomElement).attributes.item("class").value;

    using System.Windows.Forms;
    
    namespace WindowsFormsApplication4
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                var html = @"
                    <a tabindex='5' class='Hello_World' href='http://www.site.com'>Site</a>
                    <a href='http://www.site1.com'>Site1</a>";
                var wb = new WebBrowser { Parent = this, Dock = DockStyle.Fill, DocumentText = html };
                
                this.Menu = new MainMenu();
                this.Menu.MenuItems.Add("Test", delegate { Test(wb); });
            }
    
            private static void Test(WebBrowser wb)
            {
                foreach (HtmlElement a in wb.Document.GetElementsByTagName("A"))
                {
                    var ti = a.GetAttribute("tabindex");
                    var cn = a.GetAttribute("className");  // или: ((dynamic)a.DomElement).attributes.item("class").value;
                    if (ti == "5" && cn == "Hello_World")
                    {
                        var href = a.GetAttribute("href");
                        MessageBox.Show(href);
                        break;
                    }
                }
            }
        }
    }
    

    • Изменено Malobukv 21 февраля 2012 г. 9:07
    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:48
    21 февраля 2012 г. 9:04
  • Спасибо всем, сейчас буду пробывать.
    21 февраля 2012 г. 10:01