Http 获取web服务器上的文件列表

Http 获取web服务器上的文件列表,http,curl,wget,Http,Curl,Wget,全部, 我想得到一个完整的url在tact服务器的文件列表。例如,我想从这里得到所有的TIFF * 我可以用wget下载所有的.tif文件,但我要找的只是像这样的每个文件的完整url http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_04_3_20100424.tif http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10

全部,

我想得到一个完整的url在tact服务器的文件列表。例如,我想从这里得到所有的TIFF

*

我可以用wget下载所有的.tif文件,但我要找的只是像这样的每个文件的完整url

http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_04_3_20100424.tif http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_05_1_20100430.tif

关于如何使用curl或wget之类的工具将所有这些文件放入列表,您有什么想法吗


Adam

您需要服务器愿意为您提供一个包含列表的页面。这通常是一个index.html或只是请求目录

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

在这种情况下,看起来您很幸运,因此,冒着让网站管理员不安的风险,解决方案是使用wget的递归选项。指定最大递归为1,以将其约束到单个目录。

如果您
wgethttp://hyperquad.telascience.org/naipsource/Texas/20100801/
,返回的HTML包含文件列表。如果您不需要这样做,那么可以使用正则表达式来提取链接。如果您需要更强大的功能,可以使用HTML解析器(例如),并通过编程方式(从实际的HTML结构)提取页面上的链接。

我将使用
lynx
shell web浏览器获取链接列表+
grep
awk
shell工具来过滤结果,如下所示:

http://hyperquad.telascience.org/naipsource/Texas/20100801/
lynx -dump -listonly <URL> | grep http | grep <regexp> | 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

使用winscp,有一个查找窗口,可以从自己网站的目录中搜索目录和子目录中的所有文件-可能后,选择全部并复制,文本中有指向所有文件的所有链接-需要有用于连接ftp的用户名和密码:


我有一个客户端-服务器系统,它从应用服务器文件夹中指定的文件夹中检索文件名,然后在客户端显示缩略图。 客户端:(slThumbnailNames是一个字符串列表) ==在服务器端=== TIDCmdTCPServer具有CommandHandler GetThumbnailNames(CommandHandler是一个过程)

提示: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;`
`slThumbnailNames:=funGetThumbnailNames(sThumbNailPath);
函数TfMFFBClient.funGetThumbnailNames(sThumbnailPath:string):TStringList;
变量
slThisStringList:TStringList;
开始
slThisStringList:=TStringList.Create;
dmMFFBClient.tcpMFFBClient.SendCmd('GetThumbnailNames',+sThumbnailPath,700);
dmMFFBClient.tcpMFFBClient.IOHandler.Capture(slThisStringList);
结果:=slThisStringList;
结束;
过程TfMFFBServer.MFFBCmdTCPServercmdGetThumbnailNames(
ASender:tid命令);
变量
sRec:TSearchRec;
sThumbnailDir:字符串;
i、 iNumFiles:整数;
开始
尝试
ASender.Response.Clear;
sThumbnailDir:=ASender.Params[0];
iNumFiles:=FindFirst(sMFFBServerPictures+sthumnaildir+'*_t.jpg',faAnyfile,SRec);
如果iNumFiles=0,则
尝试
ASender.Response.Add(SRec.Name);
而iNumFiles=0 do
开始
如果(SRec.Attr和faDirectory faDirectory),则
ASender.Response.Add(SRec.Name);
iNumFiles:=FindNext(SRec);
结束;
最后
FindClose(SRec)
结束
其他的
ASender.Response.Add('没有缩略图');
除了
关于e:exception-do
开始
messagedlg('过程TfMFFBServer.MFFBCmdTCPServercmdGetThumbnailNames'中出错+#13+
'错误消息:'+e.消息,mterror,[mbok],0);
结束;
结束;
结束`

但这将下载文件…我只想在列表中找到这些文件的url引用。你有什么想法?我看错了。最简单的方法是从wget解析结果。Wget似乎拥有您所需要的一切,比如在TIFF上进行过滤,而不是实际获取文件。你们有什么工具/平台?对于该特定站点,可以使用PERL或SED拉出tif,查找模式href=“(.\.tif)”其中()是分组运算符,以选择所需的结果。