使用LWP :: Simple在Perl中获取ftp站点内容

时间:2011-06-06 20:20:10

标签: perl

我在这里遇到一些问题,使用LWP :: Simple来获取Perl中的ftp站点内容。如果站点使用http而不是ftp,它可以正常工作,例如ftp://ftp.di.uminho.pt/pub/ctan/fonts/。但是在我的firefox浏览器中,我可以将内容视为html。

那么如何在这种情况下获取网站的HTML?

3 个答案:

答案 0 :(得分:2)

LWP返回FTP目录的text/ftp-dir-listing类型的文档。使用File::Listing进行解析。

$ GET -USe ftp://ftp.di.uminho.pt/pub/ctan/fonts/
GET ftp://ftp.di.uminho.pt/pub/ctan/fonts/
User-Agent: lwp-request/6.00 libwww-perl/6.02

200 OK
Server: --------- Welcome to Pure-FTPd [privsep] ----------
Content-Length: 32208
Content-Type: text/ftp-dir-listing
Client-Date: Mon, 06 Jun 2011 21:32:45 GMT
Client-Request-Num: 1

drwxr-xr-x  257 500      50          20480 May 30 06:27 .
drwxrwsr-x   18 500      50           4096 Jun  6 20:02 ..
drwxr-xr-x    2 500      500          4096 Apr  7 19:13 Asana-Math
-rw-r--r--    1 500      500        573482 Apr  7 19:14 Asana-Math.zip
drwxr-xr-x    2 500      50           4096 May 20  2005 CJK
-r--r--r--    1 500      500      20384230 May 20  2005 CJK.zip
drwxr-xr-x    2 500      50           4096 May 20  2005 DayRoman
-r--r--r--    1 500      500        573352 May 20  2005 DayRoman.zip
drwxr-xr-x    2 500      50           4096 Sep  7  2007 LuxiMono
-r--r--r--    1 500      500        199660 May  6  2005 LuxiMono.zip
lrwxrwxrwx    1 500      50              8 Oct 14  2005 MnSymbol -> mnsymbol
lrwxrwxrwx    1 500      50             12 Oct 14  2005 Mnsymbol.zip -> mnsymbol.zip

['Asana-Math',     'd',              undef,    1302196380, 16877],
['Asana-Math.zip', 'f',              573482,   1302196440, 33188],
['CJK',            'd',              undef,    1116540000, 16877],
['CJK.zip',        'f',              20384230, 1116540000, 33060],
['DayRoman',       'd',              undef,    1116540000, 16877],
['DayRoman.zip',   'f',              573352,   1116540000, 33060],
['LuxiMono',       'd',              undef,    1189116000, 16877],
['LuxiMono.zip',   'f',              199660,   1115330400, 33060],
['MnSymbol',       'l mnsymbol',     8,        1129240800, 41471],
['Mnsymbol.zip',   'l mnsymbol.zip', 12,       1129240800, 41471],

答案 1 :(得分:0)

当您查看FTP目录时,Firefox将内部生成HTML文档。 FTP服务器不会提供一个。

如果你想要一个,那么你将不得不迭代文件和目录并生成你自己的。

答案 2 :(得分:0)

您可能希望改为使用Net::FTP

use Net::FTP;

$ftp = Net::FTP->new("some.host.name", Debug => 0)
  or die "Cannot connect to some.host.name: $@";

$ftp->cwd("/pub")
  or die "Cannot change working directory ", $ftp->message;

$ftp->get("that.file")
  or die "get failed ", $ftp->message;

$ftp->quit;