2011-08-08 38 views
3

全部,獲取Web服務器上的文件列表

我想從具有完整網址的服務器上獲取文件列表。例如,我想從這裏獲得所有的TIFF。

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

我可以下載所有的wget的.TIF文件,但我期待的就是完整的URL這樣每個文件。

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之類的方法將所有這些文件加入列表的想法?

亞當

回答

3

您將需要服務器是願意給你一個頁面上的列表。這通常是一個index.html或只是要求目錄。

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

看起來你很幸運,在這種情況下是這樣,在擾亂網上高手的風險,該解決方案是使用wget的遞歸選項。指定1的最大遞歸以將其限制爲該單個目錄。

+1

但是,這將下載的文件。 ..我只是想在列表中的URL引用。關於這個的想法? – aeupinhere

+0

我誤讀了。最簡單的方法是解析wget的結果。 Wget似乎有你需要的一切,比如在TIFF上進行過濾,除了沒有真正獲取文件。你有什麼工具/平臺?對於那個特定的站點,PERL或者SED可以用來提取tif,尋找模式href =「(。* \。tif)」,其中()分組操作符以選擇你想要的結果。 –

1

如果您wget http://hyperquad.telascience.org/naipsource/Texas/20100801/,則返回的HTML包含文件列表。如果你不需要這是一般的,你可以使用正則表達式來提取鏈接。如果您需要更強大的功能,可以使用HTML解析器(例如BeautifulSoup),並以編程方式提取頁面上的鏈接(來自實際的HTML結構)。

3

我會用lynx外殼web瀏覽器訪問的鏈接+ grepawk外殼工具列表篩選結果,就像這樣:

lynx -dump -listonly <URL> | grep http | grep <regexp> | awk '{print $2}' 

..where:

  • 網址 - 是你的情況下的起始URL:http://hyperquad.telascience.org/naipsource/Texas/20100801/
  • regexp - 正則表達式,只選擇你感興趣的文件,在你的情況下:\.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}' 

..now返回:

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 
相關問題