所有
我想从服务器上获取完整网址的文件列表。例如,我想从这里获得所有TIFF。
http://hyperquad.telascience.org/naipsource/Texas/20100801/ *
我可以使用wget下载所有.tif文件,但我正在寻找的只是每个文件的完整网址。
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.tif http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_05_1_20100430.tif http://hyperquad.telascience.org/naipsource/Texas/20100801/naip10_1m_2597_05_2_20100430.tif
有关如何使用curl或wget之类的内容将所有这些文件放入列表的想法吗?
亚当
答案 0 :(得分:4)
您需要服务器愿意为您提供一个包含列表的页面。这通常是index.html或只是询问目录。
http://hyperquad.telascience.org/naipsource/Texas/20100801/
看起来你在这种情况下很幸运,因此,有可能让网页管理员感到不安,解决方案就是使用wget的递归选项。指定最大递归1以使其受限于该单个目录。
答案 1 :(得分:3)
我会使用lynx
shell网络浏览器获取链接列表+ grep
和awk
shell工具来过滤结果,如下所示:
lynx -dump -listonly <URL> | grep http | grep <regexp> | awk '{print $2}'
...其中:
http://hyperquad.telascience.org/naipsource/Texas/20100801/
\.tif$
完整示例命令行以获取此SO页面上的TIF文件的链接:
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
答案 2 :(得分:1)
如果您wget http://hyperquad.telascience.org/naipsource/Texas/20100801/
,则返回的HTML包含文件列表。如果您不需要通用,则可以使用正则表达式来提取链接。如果您需要更强大的功能,可以使用HTML解析器(例如BeautifulSoup),并以编程方式提取页面上的链接(来自实际的HTML结构)。
答案 3 :(得分:1)
在winscp中有一个查找窗口,可以从自己的Web目录中搜索目录和子目录中的所有文件-在可能的情况下,全选并复制,并在文本中包含所有文件的所有链接-需要具有连接ftp的用户名和密码:
答案 4 :(得分:0)
我有一个客户端-服务器系统,它从应用服务器文件夹中指定的文件夹中检索文件名,然后在客户端中显示缩略图。 客户端:(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;`