Не могу понять, как анализировать с помощью HTML Agility Pack - PullRequest
1 голос
/ 14 октября 2011

У меня есть следующий кусок HTML-кода, но я не могу понять, как я могу получить назначенные значения

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body >
<form name="form1" method="post" action="" id="form1">
    <div>
    <table class="tableclass" >
       <tbody>
        <tr>        
        <tr>
            <td colspan="5" class="myclass1"><span id="myclass2">value1</span></td>
        </tr>

        <tr id="idvalue" aa="1" class="myclass3a">
            <td><a href="" target="_blank">value2</a></td>
            <td>value3</td>
            <td>value4</td>
            <td>value5</td>
            <td>value6</td>
        </tr>

        <tr id="idvalue" aa="2" class="myclass3b">
            <td><a href="" target="_blank">value2</a></td>
            <td>value3</td>
            <td>value4</td>
            <td>value5</td>
            <td>value6</td>
        </tr>

        <tr id="idvalue" aa="3" class="myclass3c">
            <td><a href="" target="_blank">value2</a></td>
            <td>value3</td>
            <td>value4</td>
            <td>value5</td>
            <td>value6</td>
        </tr>
        </tbody>
        </table>

    </div>

</form>
</body>
</html>

Позвольте мне немного проанализировать этот код.

На странице есть таблица с 1-й строкой, имеющей немного другой формат, где я хочу извлечь значение1 , а остальные строки, каждая из которых имеет различные классы и различные значения идентификатора, а также из каждую строку до конца таблицы, которую я хочу извлечь значение2 , значение3 , значение4 , значение5

Спасибо за ваше время

Ответы [ 2 ]

1 голос
/ 15 октября 2011
var doc = new HtmlDocument();
doc.Load(url);

var table = doc.DocumentNode.SelectSingleNode("//table[@class='tableclass']");
var value1 = table.Descendants("tr").Skip(1)
    .Select(tr => tr.InnerText.Trim())
    .First();
var theRest =
    from tr in table.Descendants("tr").Skip(2)
    let values = tr.Elements("td")
        .Select(td => td.InnerText.Trim())
        .ToList()
    select new
    {
        Value2 = values[0],
        Value3 = values[1],
        Value4 = values[2],
        Value5 = values[3],
        Value6 = values[4],
    };
1 голос
/ 15 октября 2011

Следующее ...

var document = new HtmlDocument();
...

var nodes = document.DocumentNode.Descendants("td");
foreach(var node in nodes)
{
    Console.WriteLine(node.InnerText);
}

Производит ...

value1
value2
value3
value4
value5
value6
value2
value3
value4
value5
value6
value2
value3
value4
value5
value6

Надеюсь, это то, что вы ищете.

...