Лучший отвечающий
Работа с HTML данными.

Вопрос
-
Доброе время соток. Как мне с вот этой
<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