c#htmlagility pack条件选择节点

时间:2016-06-19 16:07:11

标签: c# html-agility-pack

我不确定这个标题是否适合我的问题。 我有html如下

<table id="searchResultsTable" class="">

<tbody>
    <tr class="searchResultsItem even     ">
            <td class="searchResultsPriceValue">
            <div> 26.500 TL</div></td>
        <td class="searchResultsTitleValue ">
                    <a class="classifiedTitle" href="xxxx"> some text</a>
    </tr>
    <tr class="searchResultsItem odd     ">
    .
    //same as "searchResultsItem even     "
    .
    </tr>   

</tbody>

</table>

我是htmlagility pack的新手。我成功获得了“searchResultsItem even”和“searchResultsItem odd”的价格值。

如果价格低于或高于某个值,我想获得href值。我可以获得href,但所有时间都是“searchResultsItem even”。我想得到href,如果偶数的价格值与我的条件匹配均匀,如果奇数符合我的条件,我想得到奇数。

下面是我的代码

foreach (HtmlNode node1 in doc.DocumentNode.SelectNodes("//table[@id='searchResultsTable']"))
                {
                    foreach (HtmlNode node2 in node.SelectNodes("//td[@class='searchResultsPriceValue']"))
                    {
                        string price = node2.InnerText.ToString();
                        price = price.Trim().Replace(".", String.Empty);
                        price = price.Replace("TL", String.Empty);
                        if (Convert.ToInt32(price) < 28000)
                        {
                            HtmlNode node3 = node.SelectSingle(".//a[@class='classifiedTitle']");
                            listBox1.Items.Add(node3.Attributes["href"].Value);
                        }
                    }
                }

由于

1 个答案:

答案 0 :(得分:0)

获取tr类名作为属性值。首先遍历行,然后是td s。

foreach (HtmlNode node1 in doc.DocumentNode.SelectNodes("//table[@id='searchResultsTable']"))
{
  foreach (HtmlNode tr in table.SelectNodes("//tr"))
  {
    var @class = tr.GetAttributeValue("class", string.Empty);
    switch (@class) {
          // rest of your parsing
    }
  }
}