【问题标题】:Get <a href="https://www.google.se/"> adress width html agility pack获取 <a href="https://www.google.se/"> 地址宽度 html 敏捷包
【发布时间】:2014-05-23 21:33:35
【问题描述】:

我有这个 html:

<div class="table-wrapper" style='display: block;'>
<table id="tableSearchArticle">
    <thead>
        <tr>
            <th><a href="#">Article</a></th>
            <th><a href="#">art.nr.</a></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <a href="http://www.dabas.com/ProductSheet/Detail.ashx/121308" target="_blank">
                    Apple
                </a>
            </td>
            <td><span class="mobile-only">Tillverkarens art.nr:</span>11068</td>
        </tr>
        <tr>
            <td>
                <a href="http://www.dabas.com/ProductSheet/Detail.ashx/124494" target="_blank">
                   Banana
                </a>
            </td>
            <td><span class="mobile-only">Tillverkarens art.nr:</span>11405</td>
        </tr>
    </tbody>
</table>

这是我的方法,它应该在表中获取所有 a href 地址。但现在我只得到一个文章名称列表。我的列表返回 Apple、Banana。我想返回 a href - http-adresses 的列表。我该怎么做?

        public List<string> GetListOfHrefs()
    {
        HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load("http://www.dabas.com/mypages/search.aspx?typ=FP&sosokord=laggen");
        var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td[1]//@href";
        var listOfGtins = doc.DocumentNode.SelectNodes(xpath)
            .Select(td => td.InnerText.Replace("GTIN:", "")).ToList();
        return listOfGtins;
    }

【问题讨论】:

    标签: c# html-agility-pack


    【解决方案1】:

    您的 XPath 中有两个问题 - href 是 a 元素的属性,而不是 td 元素的属性,并且您不能使用 XPath 选择属性 - 您应该选择元素:

    var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td/a[@href]";
    var links = doc.DocumentNode.SelectNodes(xpath)
                   .Select(a => a.Attributes["href"].Value);
    

    输出:

    [
      "http://www.dabas.com/ProductSheet/Detail.ashx/121308",
      "http://www.dabas.com/ProductSheet/Detail.ashx/124494"
    ]
    

    【讨论】:

    • 再次感谢!像魅力一样工作 =)
    • 我遇到了一些问题。我试图从中获取 HTML 的页面是:dabas.com/ProductSheet/Detail.ashx/121308 但如果您查看源代码,它大部分都包含 javascript。是否有任何更改可以访问其中的 HTML 并使用 html Agility Pack 功能来解决它​​? @SergeyBerezovskiy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    相关资源
    最近更新 更多