Html 敏捷包 c#

Html Agility Pack c#

我想从每个产品中提取库存数量 (td5), 并且有一个问题,如果库存为空,系统不会在 table 中写入 0。 我提取号码的代码是:

HtmlNode node = doc.DocumentNode.SelectSingleNode("//tr[1]//td[5]");

有了这个,我当然得到了 product2 商品,any1 对我有窍门 预处理 table 并用 0 或其他方式填充 td 为正确的产品获取正确的数字?

HTML:

<tr>
        <td class="data">product1</td>
        <td class="data" width="350">TEST1</td>
        <td class="data">27</td>
        <td class="data">ST</td>
        <td class="data"></td>
        <!-- <td class=data>`LIST-KWERT[j].value`</td> -->
        <td class="data"></td>
        <!-- <td class=data>`LIST-SEINM[j].value`</td> -->
        <!-- <td class=data>`LIST-SSPEM[j].value`</td> -->
    <td class="data"></td>
        <td class="data"></td>
        <td class="data"></td>
        <td class="data">999,9</td>
    </tr>

      <tr>
        <td class="data">product2</td>
        <td class="data" width="350">TEST2</td>
        <td class="data">13</td>
        <td class="data">ST</td>
        <td class="data">21,000</td>
        <!-- <td class=data>`LIST-KWERT[j].value`</td> -->
        <td class="data"></td>
        <!-- <td class=data>`LIST-SEINM[j].value`</td> -->
        <!-- <td class=data>`LIST-SSPEM[j].value`</td> -->
    <td class="data">5,000</td>
        <td class="data">10,000</td>
        <td class="data">243</td>
        <td class="data">35,5</td>
    </tr>

如果您想在每一行中获得第 5 个 td,请使用此代码:

var html = new HtmlDocument();
html.LoadHtml(input);
var root = html.DocumentNode;
var list = new List<Data>();
foreach (var node in root.SelectNodes("//tr//td[5]"))
{
    var price = node.InnerText.IsNullOrWhiteSpace() ? "no price" : node.InnerText;
}