如何使用Python从支持ftp的网站自动下载文件?

时间:2014-04-04 06:48:26

标签: python ftp

我想下载一些托管在网站上的1500个文件。该网站受用户名和密码保护。我有用户名和密码。如果我手动下载所有这些单独的1500个文件,那将是一个巨大的忙乱。所以我想通过Python自动下载驻留在服务器中的所有文件。

是否可以通过python?

对此有任何帮助表示赞赏。 非常感谢。

import urllib.request
auth_handler = urllib.request.HTTPBasicAuthHandler()
auth_handler.add_password(url='http://****/',
                      user='****',
                      passwd='****')
opener = urllib.request.build_opener(auth_handler)
urllib.request.install_opener(opener)
urllib.request.urlopen('http://****/')

1 个答案:

答案 0 :(得分:2)

来自Python ftplib documentation

>>> from ftplib import FTP
>>> ftp = FTP('ftp.debian.org')     # connect to host, default port
>>> ftp.login()                     # user anonymous, passwd anonymous@
'230 Login successful.'
>>> ftp.cwd('debian')               # change into "debian" directory
>>> ftp.retrlines('LIST')           # list directory contents
-rw-rw-r--    1 1176     1176         1063 Jun 15 10:18 README
...
drwxr-sr-x    5 1176     1176         4096 Dec 19  2000 pool
drwxr-sr-x    4 1176     1176         4096 Nov 17  2008 project
drwxr-xr-x    3 1176     1176         4096 Oct 10  2012 tools
'226 Directory send OK.'
>>> ftp.retrbinary('RETR README', open('README', 'wb').write)
'226 Transfer complete.'
>>> ftp.quit()

如您所见,您可以使用ftp.retrlines获取有关文件名的信息,并使用ftp.retrbinary来传输给定文件。您可以组合这些功能来完成任务。