Sample code for 30+ languages & platforms
Zig

Extract HTML Title, Description, Keywords

See more Spider Examples

This example expands on the "getting started" example by showing how to access the HTML title, description, and keywords within each page spidered. These are the contents of the META tags for keywords, description, and title found in the HTML header.

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();

    // The spider object crawls a single web site at a time.  As you'll see
    // in later examples, you can collect outbound links and use them to
    // crawl the web.  For now, we'll simply spider 10 pages of chilkatsoft.com
    spider.initialize("www.chilkatsoft.com");

    // Add the 1st URL:
    spider.addUnspidered("http://www.chilkatsoft.com/");

    // Begin crawling the site by calling CrawlNext repeatedly.
    var i: i32 = 0;
    i = 0;
    while (i <= 9) : (i += 1) {
        if (spider.crawlNext()) {
            // Show the URL of the page just spidered.
            std.debug.print("{s}\n", .{try spider.getLastUrl(alloc)});

            // The HTML META keywords, title, and description are available in these properties:
            std.debug.print("{s}\n", .{try spider.getLastHtmlTitle(alloc)});
            std.debug.print("{s}\n", .{try spider.getLastHtmlDescription(alloc)});
            std.debug.print("{s}\n", .{try spider.getLastHtmlKeywords(alloc)});

            // The HTML is available in the LastHtml property
        } else |_| {
            // Did we get an error or are there no more URLs to crawl?
            if (spider.getNumUnspidered() == 0) {
                std.debug.print("No more URLs to spider\n", .{});
            } else {
                std.debug.print("{s}\n", .{try spider.getLastErrorText(alloc)});
            }
        }

        // Sleep 1 second before spidering the next URL.
        spider.sleepMs(1000);
    }
}