【问题标题】:How to get URL from the XPATH?如何从 XPATH 获取 URL?
【发布时间】:2015-11-15 20:47:01
【问题描述】:

我已尝试检查此站点上的其他答案,但没有一个对我有用。我有以下 HTML 代码:

<h3 class="x-large lheight20 margintop5">
  <a href="http://someUrl.com" class="marginright5 link linkWithHash detailsLink"><strong>some textstring</strong></a>
</h3>

我正在尝试使用以下代码从此文档中获取 #

string adUrl = Doc.DocumentNode.SelectSingleNode("//*[@id=\"offers_table\"]/tbody/tr["+i+ "]/td/table/tbody/tr[1]/td[2]/div/h3/a/@href").InnerText;

我也尝试在没有@href 的情况下这样做。还尝试使用a[contains(@href, 'searchString')]。但是所有这些行都给了我链接的名称 - some textstring

【问题讨论】:

标签: c# .net parsing html-agility-pack


【解决方案1】:

属性没有InnerText。您必须改用Attributes 集合。

string adUrl = Doc.DocumentNode.SelectSingleNode("//*[@id=\"offers_table\"]/tbody/tr["+i+ "]/td/table/tbody/tr[1]/td[2]/div/h3/a")
                               .Attributes["href"].Value;

【讨论】:

    【解决方案2】:

    为什么不直接使用 XDocument 类?

    private string GetUrl(string filename)
    {
        var doc = XDocument.Load(filename)
        foreach (var h3Element in doc.Elements("h3").Where(e => e.Attribute("class"))
        {
            var classAtt = h3Element.Attribute("class");
            if (classAtt == "x-large lheight20 margintop5")
            {
                h3Element.Element("a").Attribute("href").value;
            }
        }
    }
    

    代码未经测试,请谨慎使用。

    【讨论】:

    • Html 的格式不如 xml。这就是为什么我们有像 html agility pack 这样可以很好地处理格式错误的 html 的库。
    • 是的,我知道,但我只是根据提供的示例回答。
    猜你喜欢
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2014-06-13
    • 2014-08-16
    相关资源
    最近更新 更多