Sample code for 30+ languages & platforms
Zig

CanonicalizeUrl

See more Spider Examples

The CanonicalizeUrl method is a utility function that canonicalizes a URL into a standard form to avoid duplicates. For example, "http://www.chilkatsoft.com/" and "http://www.chilkatsoft.com/default.asp" are the same URL.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    const spider = try chilkat.Spider.init();
    defer spider.deinit();

    // Does a DNS lookup to find the default domain, which may or may not include the "www." depending on the DNS results.
    // Also domain names are converted to lowercase:
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.ChilkatSoft.com/")});

    // CanonicalizeUrl will drop the HTML fragment:
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.chilkatsoft.com/purchase2.asp#buyZip")});

    // If a username/password is in the URL, it gets dropped:
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://username:password@www.chilkatsoft.com/purchase2.asp#buyZip")});

    // Port 80 and 443 are dropped:
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.chilkatsoft.com:80/purchase2.asp")});
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "https://www.paypal.com:443/")});

    // Removes default pages:
    // default.asp, index.html, index.htm, default.html, index.htm, default.htm
    // index.php, index.asp, default.php, .cfm, .aspx, ,php3, .pl, .cgi, .txt, .shtml, .phtml
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.chilkatsoft.com/index.asp")});
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.chilkatsoft.com/index.asp")});
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.chilkatsoft.com/index.php")});
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.chilkatsoft.com/index.pl")});
    std.debug.print("{s}\n", .{try spider.canonicalizeUrl(alloc, "http://www.chilkatsoft.com/index.htm")});

    // Output:
    // http://chilkatsoft.com/
    // http://chilkatsoft.com/purchase2.asp
    // http://chilkatsoft.com/purchase2.asp
    // http://chilkatsoft.com/purchase2.asp
    // https://www.paypal.com/
    // http://chilkatsoft.com/
    // http://chilkatsoft.com/
    // http://chilkatsoft.com/
    // http://chilkatsoft.com/
    // http://chilkatsoft.com/
}