龙空技术网

python——爬FTP数据并下载到本地

编程啊青 283

前言:

此刻姐妹们对“python ftp下载最新文件”大体比较关心,兄弟们都想要学习一些“python ftp下载最新文件”的相关资讯。那么小编在网上收集了一些对于“python ftp下载最新文件””的相关内容,希望我们能喜欢,小伙伴们快快来了解一下吧!

感觉网上很多的东西比较零零散散,这次整合一个可以扫描网段的ip地址并爬取IP地址中可以匿名登陆FTP的数据扫描一个网段,获取其中所有的开放FTP服务的机器的IP地址依次获取每个FTP的文件目录内容,从每个FTP中下载一定量的文件

import platformimport sysimport osimport timeimport _threadimport datetimefrom ftplib import FTPclass FTP_P(FTP):    def dirs(self, *args):        cmd = 'LIST'        templist = []        func = None        if args[-1:] and type(args[-1]) != type(''):            args, func = args[:-1], args[-1]        for arg in args:            if arg:                cmd = cmd + (' ' + arg)        self.retrlines(cmd, templist.append)        return templistdef download_single_url_ftp(stri):    try:        ftp = FTP_P()         = "utf-8"          # 连接的ftp sever和端口        ("anonymous")  # 连接的用户名,密码        # print() #打印出欢迎信息        (r"/")  # 设置FTP当前操作的路径        for i in :            print(i+'')        ftpath = '/'        localpath = 'D:/data/'        ftpDownload(ftp,ftpath,localpath)          # 退出ftp    except (ConnectionRefusedError, TimeoutError, WindowsError) as e:            print("{}的Ftp连接失败 {}".format(stri,str(e)))            print()            pass    except BaseException as e:            print("{}的Ftp连接失败 {}".format(stri,str(e)))            print()            pass            def ftpDownload(ftp, ftpath, localpath):    '''    :param ftp: 登陆ftp返回的信息    :param ftpath: ftp中的目标路径    :param localpath: 存放下载文件的本地路径    :return:    '''    print('Remote Path: {0}'.format(ftpath))    if not os.path.exists(localpath):        os.makedirs(localpath)#如果文件不在创建文件    for file in :        print('file:', file)        if len() == 0:            pass        elif file == [0]:            print('扫描到文件')            ftpDownloadFile(ftp,file, localpath)        else:            print('扫描到文件夹')            path =  + '/' + file            local = localpath+'/'+ file                        ftpDownload(ftp, path, local)#递归            ('..')    return True#python saomiao.py 149def ftpDownloadFile(ftp, ftpfile, localfile):    bufsize = 1024    path = os.path.join(localfile,ftpfile)    with open(path, 'wb') as fid:        print('正在下载:',ftpfile)        ('RETR {0}'.format(ftpfile), fid.write, bufsize)  # 接收服务器文件并写入本地文件        print('下载完毕。')    return Truedef get_os():    os = platform.system()    if os == "Windows":        return "n"    else:        return "c"def ping_ip(ip_str):    cmd = ["ping", "-{op}".format(op=get_os()),           "1", ip_str]    output = os.popen(" ".join(cmd)).readlines()    flag = False    for line in list(output):        if not line:            continue        if str(line).upper().find("TTL") >=0:#判断存活时间            flag = True            break    if flag:        print("*** *** *** ip: %s 可以ping通  *** *** ***"%(ip_str))        download_single_url_ftp(ip_str)def find_ip(ip_prefix):    for i in range(1,256):        ip = ('%s.%s'%(ip_prefix,i))        _thread.start_new_thread(ping_ip, (ip,))        time.sleep(0.5)        # ping_ip(ip)if __name__ == "__main__":    startTime = datetime.datetime.now()    print("start time %s"%(time.ctime()))    net=sys.argv[1]    args = "".join(("211.71."+net+".1"))#211.71.149    ip_prefix = '.'.join(args.split('.')[:-1])#211.71.149    find_ip(ip_prefix)    endTime = datetime.datetime.now()    print("end time %s"%(time.ctime()))    print("total takes :",(endTime - startTime).seconds)

标签: #python ftp下载最新文件 #pythonftp文件大小 #pythonftp代码 #js 读写本地文件 #ftp有了ip地址如何下载图示