我在这里遇到一些问题,使用LWP :: Simple来获取Perl中的ftp站点内容。如果站点使用http而不是ftp,它可以正常工作,例如ftp://ftp.di.uminho.pt/pub/ctan/fonts/。但是在我的firefox浏览器中,我可以将内容视为html。
那么如何在这种情况下获取网站的HTML?
答案 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;