Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Извлечение хозяев из URL-адресов в файле и сохранение результатов

Delphi , Интернет и Сети , URL

Извлечение хозяев (доменов) из URL-адресов в текстовом файле и сохранение результатов может потребоваться в различных сценариях, например, для анализа данных веб-сайтов или для автоматизации некоторых задач. В этой статье мы рассмотрим, как выполнить эту задачу с помощью Object Pascal в Delphi.

Для начала, давайте представим, что у нас есть текстовый файл с URL-адресами, подобный следующему:

https://github.com/markjaquith/WordPress/blob/master/
https://www.example.com/path/to/page
https://subdomain.example.com/

Наша цель - извлечь домены из этих URL-адресов и сохранить их обратно в файл, получив следующий результат:

github.com
www.example.com
subdomain.example.com

Подход с использованием регулярных выражений

Одним из способов решения этой задачи является использование регулярных выражений. В Object Pascal для работы с регулярными выражениями можно использовать модуль TRegEx из пакета Vcl.Regex. Вот пример кода, который извлекает домены из URL-адресов в файле:

program ExtractHostnames;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  Vcl.Regex,
  System.IOUtils;

var
  FileContent: TArray<string>;
  RegEx: TRegEx;
  Match: TMatch;
  OutputFile: TFileStream;

begin
  // Чтение содержимого файла
  FileContent := TFile.ReadAllLines('input.txt');

  // Инициализация регулярного выражения
  RegEx := TRegEx.Create;
  RegEx.Compile('^(https?://)?([a-zA-Z0-9.-]+)');

  // Создание файла для вывода результатов
  OutputFile := TFileStream.Create('output.txt', fmOpenWrite or fmCreate);

  // Цикл по строкам файла
  for var Line in FileContent do
  begin
    // Поиск совпадений в строке
    Match := RegEx.Match(Line);

    // Проверка наличия совпадения
    if Match.Success then
    begin
      // Запись домена в файл
      OutputFile.WriteString(Match.Groups[2].Value + #10);
    end;
  end;

  // Закрытие файла и освобождение ресурсов
  OutputFile.Free;
  RegEx.Free;

  // Задержка для отображения результатов в консоли
  Readln;
end.

Этот код считывает содержимое файла input.txt, инициализирует регулярное выражение для поиска доменов в URL-адресах, а затем циклом проходит по каждой строке файла. При наличии совпадения в строке, домен извлекается из него и записывается в файл output.txt.

Подход с использованием функции ExtractDomain

Вопрос, поднятый в контексте, предлагает альтернативный подход к решению этой задачи с помощью функции ExtractDomain. Функция принимает URL-адрес в виде строки и возвращает домен, извлеченный из этого URL-адреса. Вот пример реализации такой функции:

function ExtractDomain(URL: string): string;
var
  P: Cardinal;
begin
  Result := URL;
  if AnsiStartsStr(Result, 'http://') then
    Delete(Result, 1, 7)
  else if AnsiStartsStr(Result, 'https://') then
    Delete(Result, 1, 8);

  P := Pos('/', Result);
  if P > 0 then
    SetLength(Result, P - 1);
end;

Эта функция удаляет префикс http:// или https:// из URL-адреса, а затем ищет первый символ /, который указывает на начало пути. Все символы после этого символа удаляются из строки, оставляя только домен.

Для применения этой функции к нашим URL-адресам в файле, мы можем использовать следующий код:

program ExtractHostnames;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.IOUtils;

function ExtractDomain(URL: string): string;
var
  P: Cardinal;
begin
  Result := URL;
  if AnsiStartsStr(Result, 'http://') then
    Delete(Result, 1, 7)
  else if AnsiStartsStr(Result, 'https://') then
    Delete(Result, 1, 8);

  P := Pos('/', Result);
  if P > 0 then
    SetLength(Result, P - 1);
end;

var
  FileContent: TArray<string>;
  OutputFile: TFileStream;

begin
  // Чтение содержимого файла
  FileContent := TFile.ReadAllLines('input.txt');

  // Создание файла для вывода результатов
  OutputFile := TFileStream.Create('output.txt', fmOpenWrite or fmCreate);

  // Цикл по строкам файла
  for var Line in FileContent do
  begin
    // Извлечение домена из строки
    var Domain := ExtractDomain(Line);

    // Запись домена в файл
    OutputFile.WriteString(Domain + #10);
  end;

  // Закрытие файла и освобождение ресурсов
  OutputFile.Free;

  // Задержка для отображения результатов в консоли
  Readln;
end.

Этот код аналогичен previous

Создано по материалам из источника по ссылке.

Задача заключается в том, чтобы извлечь домены (хозяев) из URL-адресов в текстовом файле и сохранить результаты в другой файл с использованием Object Pascal в Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: URL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:16:22/0.0035319328308105/0