首页 > 解决方案 > 使用 href html 敏捷包解析表

问题描述

嗨,我想解析表格,但无法完全获取信息

我使用了以下不返回 href 链接的代码

HtmlNode table = doc.DocumentNode.SelectSingleNode("//table[1]//tbody");
            foreach (var cell in table.SelectNodes(".//tr/td"))
            {
                string someVariable = cell.InnerText;
                Debug.WriteLine(someVariable);
       }

我也需要获得href,我该怎么做?

<table>
    <tbody>
    <tr>
    <td class="a1">
    <a href="/subtitles/joker-2019/farsi_persian/2110062">
    <span class="l r positive-icon">
    Farsi/Persian
    </span>
    <span>
    Joker.2019.WEBRip.XviD.MP3-SHITBOX
    </span>
    </a>
    </td>
    <td class="a3">
    </td>
    <td class="a40">
    &nbsp;
    </td>
    <td class="a5">
    <a href="/u/695804">
    meisam_t72
    </a>
    </td>
    <td class="a6">
    <div>
    ►► زیرنویس از میثم ططری - ویرایش شده ◄◄ - meisam_t72 کانال تلگرام&nbsp; </div>
    </td>
    </tr>
    </tbody>
    </table>

标签: c#html-agility-pack

解决方案


在您的内部,您foreach需要检查单元格的内容是否包含<a>标签。如果它包含从这个标签中获取属性 href。

像这样的东西(未经测试)

foreach (var cell in table.SelectNodes(".//tr/td"))
{
    string someVariable = cell.InnerText;
    Debug.WriteLine(someVariable);

    var links = cell.SelectNodes(".//a");
    if (links == null || !links.Any())
    {
        continue;
    }

    foreach (var link in links)
    {
      var href = link.Attributes["href"].Value;
      // do whatever you want with the link.
    }
}

推荐阅读