使用xpath查找正确的节点

时间:2014-06-13 18:55:22

标签: xpath html-agility-pack

我有一个包含tds的表,如下所示。 我试图只抓住href-part 现在我有这样的事情:

var aTags = htmlDocument.DocumentNode.SelectNodes("//td//a[@href]"); 

它似乎正在返回td中的所有信息。如何指定我只想要那个href?这里有很多类似的问题,但似乎无法让它发挥作用。

<tbody>
<tr>
        <td colspan="1" rowspan="1">
        <a shape="rect" id="ctl00_mainCPH_ResultListUC_ResultList_ctl04_hlRubrik" href="/sitevision/proxy/4.38a41afd11d99fbdb65800016.html/svid12_38a41afd11d99fbdb65800021/-123388378/Standard/Platsannonser/VisaFritextAnnonser.aspx?ids=2499859&amp;q=s%28sn%28systemutvecklare%29sida%281%29ar%2820%29%29" style="display:inline-block;width:160px;">Systemutvecklare</a>
    </td>
 </tr>
</tbody>  

。每个对象都有一个外部HTML属性,看起来像上面的标签,      我需要的是你得到hrefs并收集字符串列表中的sthem .. 下面的图像显示我想要的值实际存在于我得到的对象中,我想要hrefs的值... enter image description here 编辑: 我似乎能够得到像这样的innerhtml:

var bTags = htmlDocument.DocumentNode.SelectNodes("//td//a/@href").Select(o => o.InnerHtml).ToList();

但我仍然不知道如何获得hrefs ......

2 个答案:

答案 0 :(得分:2)

您的XPath将为您提供具有名为a的属性的所有href个元素。要获取属性本身,您需要使用//td//a/@href

答案 1 :(得分:0)

这段代码似乎做了我想要的:

var bTags = htmlDocument.DocumentNode.SelectNodes("//td//a/@href").Select(o => o.Attributes["href"].Value).ToList();