Html Agility Pack以html格式获取span类名

时间:2018-04-30 16:35:43

标签: asp.net html-agility-pack

我可以获得公司 - 员工 - 见解 - 项目部分;但是,当我尝试在graph-stats中提取特定范围的类名时,它总是返回employee-decrease。页面上有多个部分具有相同的部分名称(以自上而下的列表格式),如下例所示。

我需要从graph-stats中的span中提取类名。在某些情况下,员工减少或员工增加。

我还需要Car Center文本,这就是我开始使用company-employee-insights-item的原因。

无法确定我们在“For Each”项目中隔离当前范围的最佳方法。这就是我到目前为止所拥有的;但每次它都会让员工减少。

Dim ndes As Array = html.DocumentNode.SelectNodes("//*[contains(@class,'company-employee-insights-item')]").ToArray

    Dim result As String = String.Empty
                For Each item As HtmlNode In ndes

                    Dim nde As HtmlNode = item.SelectSingleNode("//*[contains(@class,'graph-stats')]/span")

                    Dim s As String = HttpUtility.HtmlDecode(item.OuterHtml.Trim)
                    result = result & s & " " & nde.Attributes(0).Value & "<br/>"

                Next

以下是html的示例,其中有两个部分,页面上可能有X个部分。

<section class="company-employee-insights-item">
            <dl>
              <dt>
                Car Center
                <span class="employee-counter">
                  (203)
                </span>
              </dt>
              <dd class="graph-stats">
                  <span class="employee-decrease">
                    <li-icon aria-hidden="true" type="caret-filled-down-icon"><svg></path></svg></li-icon>
                    3%
                  </span>
              </dd>
            </dl>
</section>

<section class="company-employee-insights-item">
            <dl>
              <dt>
                Truck Center
                <span class="employee-counter">
                  (203)
                </span>
              </dt>
              <dd class="graph-stats">
                  <span class="employee-increase">
                    <li-icon aria-hidden="true" type="caret-filled-down-icon"><svg></path></svg></li-icon>
                    3%
                  </span>
              </dd>
            </dl>
</section>

1 个答案:

答案 0 :(得分:0)

通过始终拥有[base_url][text1][1] [base_url][text1][2] . . . [base_url][text1][16] [base_url][text2][1] [base_url][text2][2] . . . [base_url][text2][154] . . . . [base_url][text100][19] <dd>class的{​​{1}}和graph-stats值为<span>的子class,可以描述所需节点 employee-开始,因此可行:

Dim document = New HtmlDocument
Dim xpath = "//dd[@class='graph-stats']/span[starts-with(@class, 'employee-')]"
document.LoadHtml(html)
For Each dd In document.DocumentNode.SelectNodes(xpath)
    Console.WriteLine(dd.Attributes("class").Value)
Next