【问题标题】:How should I get the absolute URL in CsQuery?我应该如何在 CsQuery 中获取绝对 URL?
【发布时间】:2014-05-10 02:06:12
【问题描述】:

我正在尝试获取维基百科页面上每个锚标记的绝对 URI。我认为 .href 属性应该给出绝对 URI,但是当我在 CsQuery 中尝试它时,我发现它仍然给了我相对 URI。我应该如何获取绝对 URI?

    static void Main(string[] args)
    {
        string url = "https://en.wikipedia.org/wiki/Barack_Obama";
        var dom = CQ.CreateFromUrl(url);
        var selected = dom["div#mw-content-text a"];
        foreach (var a in selected)
            Console.WriteLine(a["href"]);
    }

【问题讨论】:

    标签: c# jquery csquery


    【解决方案1】:

    CsQuery 显示 HTML 页面中存在的任何内容...

    你可以这样做:

     string domain = "https://en.wikipedia.org";
    
     var dom = CQ.CreateFromUrl(url);
    
     List<string> urls = new List<string>();
    
     dom["a[href]"].Each(dom=>{
        string url = dom.GetAttribute("href");
        if(!url.StartsWith("https"))
           url = domain + url;
    
        urls.Add(url);
     });
    

    });

    【讨论】:

    • 是的。我了解您始终可以使用“域 + url”来提供绝对 URI。但是对于每个锚文本,如果您在 Chrome 开发人员工具中检查它,它的 href 属性实际上应该提供绝对 URI。 CsQuery 中是否有类似的方法?
    • Chrome 知道页面的上下文,因此它可以构建完整的 URL。 CsQuery 不知道页面在 heirachy 中的位置,它只是标记。所以你需要做这样的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    相关资源
    最近更新 更多