2012-06-09 4 views
0

Я пытаюсь разобрать HTML-код с помощью Html Agility Pack. Есть ли какой-либо учебник, или кто-нибудь может сказать мне, как я могу получить текст из <td>, у которого нет идентификатора и нет класса?Получение текста из элементов без имени или имени класса

<table id="results-table"> 
    <tr class="row1"> 
    <td>Diode Zener Single 12V 5% 1W 2-Pin DO-41 Bulk</td> 
    ... 

В каждой строке содержится 10 различных <td>. Благодаря!

+0

Iwant в добавьте, что каждая строка содержит 10 разных td – user1444921

+0

Если у вас есть вопросы по обновлению, пожалуйста, отредактируйте его и добавьте, не добавляйте его в качестве комментария в будущем. –

ответ

3

Вы можете попробовать использовать этот XPATH запросить все td сек в пределах вашей table имея id="results-table"

//table[@id='results-table']/tr/td 

Firepath для Firefox может помочь вам в разработке XPATH и вы можете манипулировать его оттуда.

Пример кода ниже

HtmlDocument doc = new HtmlDocument(); 
var fileName = @"..\..\..\docs\10960189.htm"; 
doc.Load(fileName); 

var nodes = doc.DocumentNode.SelectNodes("//table[@id='results-table']/tr/td"); 

foreach (var node in nodes) 
{ 
    Debug.WriteLine(node.InnerText); 
} 

HTH

0

Я предполагаю, что некоторые из ваших TD теги будут иметь класс/Я бы. Используйте следующий код. Я писал, что в LINQPad

void Main() 
{ 
    var webGet = new HtmlAgilityPack.HtmlDocument(); 
    //web page/string that need to be parsed 
    webGet.LoadHtml(@"<table id='results-table'>" + 
           "<tr class='row1'>" + 
           "<td class='testclass'>test td with class</td>" + 
           "<td id='testid'>test td with id</td>" + 
           "<td>Diode Zener Single 12V 5% 1W 2-Pin DO-41 Bulk</td>" + 
           "<td>test td without class or id</td>" + 
           "<tr/>" 
           ); 

    var tableOnPage = (from tds in webGet.DocumentNode.Descendants() 
         where lnks.Name == "td" && 
          lnks.Attributes["class"] == null && tds.Attributes["id"] == null && 
          tds.ParentNode.InnerText.Trim().Length > 0 && lnks.InnerText.Trim().Length > 0 
        select new 
        { 
         td = tds.DescendantNodes().SingleOrDefault().InnerHtml.Trim(), 
        }); 

    //looping through each items 
    foreach (var item in tableOnPage) 
    { 
     Console.WriteLine(item.td); 
    } 
} 

Выход будет

Диод Зенера Single 12V 5% 1W 2-Pin DO-41 Bulk

тест тд без класса или идентификатора

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