Получение списка файлов на веб-сервере

Все,

Я хотел бы получить список файлов с сервера с полным URL-адресом. Например, я хотел бы получить все файлы TIFF отсюда.

http://hyperquad.telascience.org/naipsource/Texas/20100801/*

Я могу загрузить все файлы .tif с помощью wget, но я ищу только полный URL-адрес каждого файла, подобного этому.

http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_04_2_20100430.tif http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_04_3_20100424.tif http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_04_4_20100430=. http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_05_1_20100430 http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_05_2_2010043

Любые мысли о том, как получить все эти файлы в список, используя что-то вроде curl или wget?

Адам


person aeupinhere    schedule 08.08.2011    source источник


Ответы (5)


Вам нужно, чтобы сервер был готов предоставить вам страницу со списком на ней. Обычно это index.html или просто запрос каталога.

http://hyperquad.telascience.org/naipsource/Texas/20100801/

Похоже, в этом случае вам повезло, поэтому, рискуя расстроить веб-мастера, решением будет использование рекурсивной опции wget. Укажите максимальную рекурсию, равную 1, чтобы ограничить ее одним каталогом.

person Richard Corfield    schedule 08.08.2011
comment
Но это загрузит файлы... Мне просто нужна ссылка на них в списке. Мысли об этом? - person aeupinhere; 09.08.2011
comment
Я неправильно прочитал. Самый простой способ - проанализировать результат из wget. Wget, кажется, имеет все, что вам нужно, например, фильтрацию в TIFF, за исключением фактического получения файлов. Какие инструменты/платформа у вас есть? Для этого конкретного сайта можно использовать PERL или SED для извлечения tif-файлов в поисках шаблона href=(.*\.tif) где () — операторы группировки для выбора нужного результата. - person Richard Corfield; 09.08.2011

Я бы использовал веб-браузер оболочки lynx, чтобы получить список ссылок + инструменты оболочки grep и awk для фильтрации результатов, например:

lynx -dump -listonly <URL> | grep http | grep <regexp> | awk '{print $2}'

..куда:

  • URL - это стартовый URL, в вашем случае: http://hyperquad.telascience.org/naipsource/Texas/20100801/
  • regexp - это регулярное выражение, которое выбирает только интересующие вас файлы, в вашем случае: \.tif$


Заполните пример командной строки, чтобы получить ссылки на файлы TIF на этой странице SO:

lynx -dump -listonly http://stackoverflow.com/questions/6989681/getting-a-list-of-files-on-a-web-server | grep http | grep \.tif$ | awk '{print $2}'

.. теперь возвращает:

http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_04_2_20100430.tif
http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_04_4_20100430.tif
http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_05_2_20100430.tif
person Greg Dubicki    schedule 14.01.2015

Если вы wget http://hyperquad.telascience.org/naipsource/Texas/20100801/, возвращаемый HTML-код содержит список файлов. Если вам не нужно, чтобы это было общим, вы можете использовать регулярные выражения для извлечения ссылок. Если вам нужно что-то более надежное, вы можете использовать анализатор HTML (например, BeautifulSoup). ) и программно извлечь ссылки на странице (из фактической структуры HTML).

person Michael Aaron Safyan    schedule 08.08.2011

С winscp есть окно поиска, в котором можно искать все файлы в каталогах и подкаталогах из каталога в собственной сети - после этого можно выбрать все и скопировать, и иметь в тексте все ссылки на все файлы - нужно иметь имя пользователя и пароль для подключения фтп:

https://winscp.net/eng/download.php

person Javier Reinoso    schedule 19.11.2018

У меня есть система клиент-сервер, которая извлекает имена файлов из назначенной папки в папке сервера приложений, а затем отображает эскизы в клиенте. КЛИЕНТ: (slThumbnailNames — это список строк) == на стороне сервера === TIDCmdTCPServer имеет CommandHandler GetThumbnailNames (командный обработчик — это процедура)

Подсказки: sMFFBServerPictures создается в методе oncreate сервера приложений. sThumbnailDir передается серверу приложений от клиента.

`slThumbnailNames := funGetThumbnailNames(sThumbNailPath);
function TfMFFBClient.funGetThumbnailNames(sThumbnailPath:string):TStringList;
var
  slThisStringList:TStringList;
begin
  slThisStringList := TStringList.Create;
  dmMFFBClient.tcpMFFBClient.SendCmd('GetThumbnailNames,' + sThumbnailPath,700);
  dmMFFBClient.tcpMFFBClient.IOHandler.Capture(slThisStringList);
  result := slThisStringList;
end;

procedure TfMFFBServer.MFFBCmdTCPServercmdGetThumbnailNames(
  ASender: TIdCommand);
var
  sRec:TSearchRec;
  sThumbnailDir:string;
  i,iNumFiles: Integer;
begin
  try
    ASender.Response.Clear;
    sThumbnailDir := ASender.Params[0];
    iNumFiles := FindFirst(sMFFBServerPictures + sThumbnailDir + '*_t.jpg', faAnyfile, SRec );
    if iNumFiles = 0 then
    try
      ASender.Response.Add(SRec.Name);

      while iNumFiles = 0 do
      begin
        if (SRec.Attr and faDirectory <> faDirectory) then
          ASender.Response.Add(SRec.Name);
        iNumFiles := FindNext(SRec);
      end;
    finally
      FindClose(SRec)
    end
    else
      ASender.Response.Add('NO THUMBNAILS');
  except
  on e:exception do
  begin
    messagedlg('Error in procedure TfMFFBServer.MFFBCmdTCPServercmdGetThumbnailNames'+#13+
      'Error msg: ' + e.Message,mterror,[mbok],0);
   end;
  end;
end;`
person OldManSam    schedule 06.01.2021