python下载网站文件

简介: 场景说明:1、定时从网站下载程序文件;2、定时清理文件,以免占用磁盘空间过大; 程序功能:1、使用urllib2,urllib类从网站抓取数据,并下载到指定路径;2、为避免重复下载,在下载前做数据对比;3、使用多线程,一个实现下载的功能,另一个实现清理功能;4、每24小时执行一次。

场景说明:
1、定时从网站下载程序文件;
2、定时清理文件,以免占用磁盘空间过大;

程序功能:
1、使用urllib2,urllib类从网站抓取数据,并下载到指定路径;
2、为避免重复下载,在下载前做数据对比;
3、使用多线程,一个实现下载的功能,另一个实现清理功能;
4、每24小时执行一次。

import urllib2,urllib
import re
import os,sys
import time
import datetime
import threading

proxy_info={'user':'user', 'password':'xxxxxx' , 'server':'http://xxx:8080'}
url1 = "http://xxx.com/"
path=r'x:\download'

con=threading.Condition()
def downloadpatch(path,url1):
    if con.acquire():
        while 1:
            print '               start thread of downloadpatch'
            print 'present time is: ',datetime.datetime.now()
            passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
            passmgr.add_password(None, proxy_info['server'] , proxy_info['user'], proxy_info['password'])
            auth = urllib2.ProxyBasicAuthHandler(passmgr)
            opener = urllib2.build_opener(urllib2.ProxyHandler({'http':proxy_info['server']}) , auth)
            urllib2.install_opener(opener)
            proname = urllib2.urlopen(url1)
            text=proname.read()
            print 'connect to website successfully'
            #print text
            name=re.findall('HREF="(\d+xdat.exe)"',text,re.IGNORECASE)
            #name=re.findall('HREF="(readme.txt)"',text,re.IGNORECASE)
            print 'the following files are all patchs in the website: '
            print name
        
            files=os.listdir(path)
            for i in files:
                for x in name:
                    if i==x:
                        name.remove(x)
            if len(name)>0:   
                print 'the following files are need to download:'
                print name
                print 'please wait......'
                for i in name:
                    f=open(path+'\\'+i,'wb')
                    downpro=urllib2.urlopen(url1+i)
                    while 1:
                        data=downpro.read(1024)
                        if not len(data):
                            break
                        f.write(data)
                    f.close()
                    print '%s files have download!!!'%i
                    f1=open(path+'\\'+'log'+'\\'+'log.txt','a')
                    f1.write(str(datetime.datetime.now())+' ')
                    f1.write('%s files have download!!!'%i)
                    f1.write('\n')
                    f1.close()
            else:
                print 'no files have to download' 
            proname.close()
            print '--------------------------------------------'
            con.notify()
        
            con.wait()
            
            time.sleep(24*60*60)
            #time.sleep(10)

def deletepatch(yourpath):
    if con.acquire():
        while 1:
            print '               starting thread of delete files'
            print 'present time is  :',datetime.datetime.now()
            pathlist=os.listdir(yourpath)#list all files
            for i in range(len(pathlist)):#counts
                source=yourpath+'\\'+pathlist[i]#path of a file
                if os.path.isfile(source):#whether is file
                    m=time.localtime(os.stat(source).st_ctime)# create time of file
                    endtime=datetime.datetime.now()# now time
                    startime=datetime.datetime(m.tm_year,m.tm_mon,m.tm_mday,m.tm_hour,m.tm_min,m.tm_sec)
                    #translate the time 
                    mydays=(endtime-startime).days
                    if mydays>=7:#if time is over 7 days
                        os.remove(source)# remove the file
                        print 'File',source,'have been deleted'
                        f2=open(path+'\\'+'log'+'\\'+'log.txt','a')
                        f2.write(str(datetime.datetime.now()))
                        f2.write('File',source,'have been deleted')
                        f2.write('\n')
                        f2.close()
                    else:
                        print 'File',source,'is now useful for us'
                else:
                    print 'File',source,'is not execute program'
            print '--------------------------------------------'
            con.notify()
            con.wait()
            
            time.sleep(24*60*60)
            #time.sleep(10)
        
if __name__=='__main__':
    try:
        t1=threading.Thread(None,target=downloadpatch,args=(path,url1))
        t1.start()
        
        
        t2=threading.Thread(None,target=deletepatch,args=(path,))
        t2.start()
        
    except Exception,e:
        print e
目录
相关文章
|
2月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
107 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
2月前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
20天前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
123 69
|
2天前
|
Shell 开发者 Docker
Python文件打包:一站式指南
本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
|
6天前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
28 5
|
1月前
|
数据采集 JavaScript Python
如何根据目标网站调整Python爬虫的延迟时间?
如何根据目标网站调整Python爬虫的延迟时间?
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
|
1月前
|
存储 算法 文件存储
探秘文件共享服务之哈希表助力 Python 算法实现
在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。
|
2月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
85 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
2月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
91 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡

热门文章

最新文章

下一篇
oss创建bucket