【问题标题】:Most appropriate way of getting absolute URLs from crawled urls从抓取的网址中获取绝对网址的最合适方法
【发布时间】:2014-08-12 19:23:39
【问题描述】:

假设我有如下的根 url

http://www.monstermmorpg.com

现在我将展示几个 url 示例以及如何获取目标

url1: http://www.monstermmorpg.com/
url2: http://www.monstermmorpg.com/Register#21312
url3: Register#21312
url4: /Register
url5: Register
url6: /Register?news=true&news2=true
// there may be more that goes to same url but i don't have full list atm

我需要一个函数,它会在 root url 的帮助下产生以下 url

url1: http://www.monstermmorpg.com
url2: http://www.monstermmorpg.com/Register
url3: http://www.monstermmorpg.com/Register
url4: http://www.monstermmorpg.com/Register
url5: http://www.monstermmorpg.com/Register
url6: http://www.monstermmorpg.com/Register?news=true&news2=true

有这种方法,但我认为没有更好的方法是不够的?

C# .net 4.5 WPF 应用程序

Uri baseUri= new Uri("http://www.contoso.com");
 Uri myUri = new Uri(baseUri,"catalog/shownew.htm?date=today");
 Console.WriteLine(myUri.AbsoluteUri);

【问题讨论】:

  • 你需要爬取所有的url,还是只提取价值?如果是这样,正则表达式模式会做到这一点
  • 如果你知道你有一个基本的 URI 和一个相对路径,那么这个构造函数是合适的。如果您认为它可能会失败,请使用Uri.TryCreate

标签: c# wpf uri web-crawler


【解决方案1】:
static void Main(string[] args)
{
    var baseUrl = "http://www.monstermmorpg.com";

    var urls = new string[] {
        "http://www.monstermmorpg.com/",
        "http://www.monstermmorpg.com/Register#21312",
        "Register#21312",
        "/Register",
        "Register",
        "/Register?news=true&news2=true" };

    var absoluteUrls = new List<string>();

    foreach (var url in urls)
    {
        if (url.StartsWith("http"))
        {
            var uri = new Uri(url);
            absoluteUrls.Add(uri.Host + uri.PathAndQuery);
        }
        else
        {
            var urlWithSlash = url;
            if (!urlWithSlash.StartsWith("/"))
                urlWithSlash = "/" + url;

            var uri = new Uri(baseUrl + urlWithSlash);
            absoluteUrls.Add(uri.Host + uri.PathAndQuery);
        }
    }

    // Now absoluteUrls contains 
    //url1: http://www.monstermmorpg.com
    //url2: http://www.monstermmorpg.com/Register
    //url3: http://www.monstermmorpg.com/Register
    //url4: http://www.monstermmorpg.com/Register
    //url5: http://www.monstermmorpg.com/Register
    //url6: http://www.monstermmorpg.com/Register?news=true&news2=true
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    相关资源
    最近更新 更多