首页 > 解决方案 > Xpath 返回 nav/ul/li/a/herf

问题描述

网站网址:www.tase.co.il

网站源代码:

<nav class="collapse more_madad_nav in" id="more_madad_nav">
    <ul class="first_level">
        <li>
            <ul class="second_level">
                <li class="current"><a href="/he/market_data/security/1158823/major_data"> x </a></li>
                <li><a href="/he/market_data/security/1158823/graph"> x </a></li>
                <li><a href="/he/market_data/security/1158823/indices">x</a></li>
                <li><a href="/he/market_data/security/1158823/statistics"> x</a></li>
                <li><a href="/he/market_data/security/1158823/historical_data"> x </a></li>
                <li><a href="/he/market_data/security/1158823/otc"> x </a></li>
                <li><a href="/he/market_data/security/1158823/short_sale">x</a></li>
            </ul>
        </li>
        <li><!----><h3> x </h3>
            <ul class="second_level">
                <li><a href="/he/market_data/company/2135/about?securityId=1158823">x</a></li>
                <li><a href="/he/market_data/company/2135/securities?securityId=1158823">x</a></li>
                <li><!----><a href="/he/market_data/company/2135/reports_maya?securityId=1158823">x</a></li>
                <li><a href="/he/market_data/company/2135/financial_reports?securityId=1158823">x</a></li>
                <li><a href="/he/market_data/company/2135/analysis?securityId=1158823">x</a></li>
            </ul>
        </li>
    </ul>
</nav>

我的 GetHtmlDocument 的 C# 代码:

protected HtmlDocument GetHtmlDocument(string sUrl, Encoding oEncoding, bool bSetContentType = true) {

    string sPostData = "GET";
    string sReferer = string.Empty;
    List < string > oCookies = new List < string > ();
    string sHtmlContent = string.Empty;
    string sRedirectUrl = string.Empty;
    return GetHtmlDocument(sUrl, sPostData, sReferer, oCookies, ContentType.html, out sRedirectUrl, out sHtmlContent, oEncoding, bSetContentType);
}

protected HtmlDocument GetHtmlDocument(string sUrl, string sPostData, string sReferer, List < string > oCookies, ContentType eContentType, out string sRedirectUrl, out string sHtmlContent, Encoding oEncoding, bool bSetContentType = true) {

    HttpStatusCode oHttpStatusCode = SingleHttpRequest(sUrl, sPostData, sReferer, oCookies, ContentType.html, out sRedirectUrl, out sHtmlContent, oEncoding, true, bSetContentType);
    if (oHttpStatusCode != HttpStatusCode.OK) {
        string sMsg = string.Format("SingleHttpRequest to '{0}' returned '{1}' status", sUrl, oHttpStatusCode);
        LOG.Error(sMsg);
        throw new Exception(sMsg);
    }
    HtmlDocument oHtmlDocument = new HtmlDocument();
    LOG.DebugFormat("sHtmlContent : \n{0}\n , sUrl : {1}", sHtmlContent, sUrl);
    oHtmlDocument.LoadHtml(sHtmlContent);
    return oHtmlDocument;
}

HtmlDocument oSearchHtmlDocument = GetHtmlDocument(sSearchUrl, false);
HtmlNode o = oSearchHtmlDocument.DocumentNode.SelectSingleNode("//*[@id='more_madad_nav']//ul[@class='second_level']//li/a[contains(@href,'about')]/@href"); //this is the line!

我正在尝试从“第二级”(/he/market_data/company/2135/about?securityId=1158823) 获取第一个href 感​​谢您的帮助

标签: c#xpathselectsinglenode

解决方案


试试查询nav/ul/li[1]/ul/li[1]/a/@href

请参阅下面的测试结果 在此处输入图像描述


推荐阅读