Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Getting Started Spidering a Site

See more Spider Examples

This is a very simple "getting started" example for spidering a web site. As you'll see in future examples, the Chilkat Spider library can be used to crawl the Web. For now, we'll concentrate on spidering a single site.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Spider;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  spider: TSpider;
  i: Integer;

begin
  success := False;

  spider := TSpider.Create;

  //  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.

  for i := 0 to 9 do
    begin

      success := spider.CrawlNext();
      if (success = True) then
        begin
          //  Show the URL of the page just spidered.
          WriteLn(spider.LastUrl);
          //  The HTML is available in the LastHtml property
        end
      else
        begin
          //  Did we get an error or are there no more URLs to crawl?
          if (spider.NumUnspidered = 0) then
            begin
              WriteLn('No more URLs to spider');
            end
          else
            begin
              WriteLn(spider.LastErrorText);
            end;
        end;
      //  Sleep 1 second before spidering the next URL.
      spider.SleepMs(1000);
    end;



  spider.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.