2013-10-24 3 views
-1

Я использую пакет HTMLAgility для разбора html, а затем используя xpath, вы получите столбец таблицы с определенным классом.Извлечение значения элемента с помощью пакета HTMLAgility

HtmlAgilityPack.HtmlWeb web = new HtmlWeb(); 
HtmlAgilityPack.HtmlDocument doc = web.Load("www.url.com"); 

foreach (HtmlNode row in doc.DocumentNode.SelectNodes("(//td[@class='titleColumn'])[2]")) 
{ 
    Response.Write(row.InnerHtml + "<br />"); 
} 

Я извлекаю данные и строку. Innerhtml выглядит так.

<a>Title</a> <span>Year</span><br /> 

Я хочу сохранить значение элемента a и span в отдельных строковых переменных. Пожалуйста, помогите

+0

'row.InnerText' .....? – Arran

+0

@Aran Thats дает строку «Title Year». Я хочу сохранить две отдельные строки в строковых переменных. –

+0

Хорошо, тогда покажите нам, как выглядит HTML. Мы понятия не имеем, против чего вы пытаетесь убежать. – Arran

ответ

2

Ваше выражение xpath выбирает второй <td>, который имеет класс titleColumn. Согласно внутреннему html узла, этот <td> hode имеет два дочерних узла: <a> и <span>. Таким образом, вы можете легко найти эти узлы, а затем поместить внутренний текст (или внутренний html) в переменные string. Смотри, это: выход

foreach (var row in doc.DocumentNode.SelectNodes("(//td[@class='titleColumn'])[2]")) 
{ 
    var a = row.SelectSingleNode("a"); 
    var span = row.SelectSingleNode("span"); 

    Console.WriteLine(a.InnerText); 
    Console.WriteLine(span.InnerText); 
} 

будет:

Title 
Year 
Смежные вопросы