2011-06-06 44 views
0

我在這裏有一些問題使用LWP :: Simple在Perl中獲取ftp站點內容。如果該網站使用http,但不能使用ftp,例如ftp://ftp.di.uminho.pt/pub/ctan/fonts/,那麼它會正常工作。但在我的Firefox瀏覽器中,我可以將內容視爲html。使用LWP ::簡單得到在Perl中的ftp站點內容

那麼如何在這種情況下獲取網站的html?

+0

Firefox瀏覽器「談判」 FTP並顯示「頁面」給你,就好像它是一個HTML頁面,但它不是:) – Konerak 2011-06-06 20:26:54

回答

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], 
+0

+1,謝謝。我確實有一個問題。什麼是GET -USe ftp:// ftp.di.uminho.pt/pub/ctan/fonts /'?一個shell命令或一個perl命令? – 2011-06-06 21:53:42

+0

也可以請你詳細闡述一下如何在這裏使用'File :: Listing'?我沒有看到這樣做的便捷方式。與正則表達式相比,我認爲'File :: Listing'很難使用。謝謝。 – 2011-06-06 21:57:29

+0

http://p3rl.org/lwp-request – daxim 2011-06-06 21:58:09

0

Firefox將在內部當您查看FTP目錄時生成HTML文檔。 FTP服務器不會提供一個。

如果你想要一個,那麼你將不得不迭代文件和目錄並生成你自己的。

+0

是的,但這並不真的回答他的問題...... – Konerak 2011-06-06 20:27:24

+0

這個問題是以一個錯誤的前提爲基礎的,這就是你如何儘可能地接近要求。 – Quentin 2011-06-06 21:48:22

0

你可能想使用Net::FTP代替:

use Net::FTP; 

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

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

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

$ftp->quit;