Как получить только два элемента из HTML в одном атрибуте? - PullRequest
0 голосов
/ 22 января 2019

я хочу парсинг сайта с помощью htmlagilitypack на aspx

ниже мой код

var html = @"http://test.com";
HtmlWeb web = new HtmlWeb();
var htmlDoc = web.Load(html);

var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//table[@class='tableclass']//tr")
    .Where(x => !x.Attributes["id"].Value.Contains("tableid"));

при выполнении этого кода возвращаются все 'tr' из HTMLtable.

ниже - один из возвращаемых HTML

<tr bgcolor="gray">
    <td align="center" height="40">123</td>

    <td align="center" width="56">
        <div>
            <img src="http://img.test.com/img.jpg" height="10" border="0" />
        </div>
    </td>

    <td style="padding-left:3px;"><a href="/detail/detail.php?key=1234">THIS_1</a></td>

    <td style="padding-left:3px;"><a href="/detail/detail.php?key=1234">THIS_2</a></td>

    <td style="padding-left:3px;"><a href="/detail/add.php?site=1234"><font color='red'>blah</font></a></td>

    <td align="center"><a href="/board/board.php?id=1">0</a></td>

    <td align="center"><a href="/detail/detail.php?key=1234">0</a></td>

    <td align="center"><a href="/board/board.php?id=1">0</a></td>

    <td align="center"><a href="/board/board.php?id=1">0</a></td>
</tr>

Я хочу только два тд (THIS_1, THIS_2) InnerText

ниже мой неправильный код

foreach (var node in htmlNodes)
{
    var str1 = node.ChildNodes["td"].InnerHtml;
    var str2 = node.SelectNodes(".//td[@style='padding-left:3px;']");
}

Я хочу поместить [THIS_1 в str1] и [THIS_2 в str2].

1 Ответ

0 голосов
/ 22 января 2019

Попробуйте получить элементы по индексу. Например:

foreach (var node in htmlNodes)
{
    var str1 = node.SelectSingleNode("td[3]").InnerText;  // THIS_1
    var str2 = node.SelectSingleNode("td[4]").InnerText;  // THIS_2
}
...