Python实现的批量下载RFC文档


Posted in Python onMarch 10, 2015

RFC文档有很多,有时候在没有联网的情况下也想翻阅,只能下载一份留存本地了。
看了看地址列表,大概是这个范围:
http://www.networksorcery.com/enp/rfc/rfc1000.txt
...
http://www.networksorcery.com/enp/rfc/rfc6409.txt

哈哈,很适合批量下载,第一个想到的就是迅雷……
可用的时候发现它只支持三位数的扩展(用的是迅雷7),我想要下的刚好是四位数……
郁闷之下萌生自己做一个的想法!
这东西很适合用python做,原理很简单,代码也很少,先读为快。
代码如下:

#! /usr/bin/python

'''

  File      : getRFC.py

  Author    : Mike

  E-Mail    : Mike_Zhang@live.com

'''

import urllib,os,shutil,time
def downloadHtmlPage(url,tmpf = ''):

    i = url.rfind('/')

    fileName = url[i+1:]

    if tmpf : fileName = tmpf

    print url,"->",fileName

    urllib.urlretrieve(url,fileName)

    print 'Downloaded ',fileName    

    time.sleep(0.2)

    return fileName

    

# http://www.networksorcery.com/enp/rfc/rfc1000.txt

# http://www.networksorcery.com/enp/rfc/rfc6409.txt

if __name__ == '__main__':

    addr = 'http://www.networksorcery.com/enp/rfc'    

    dirPath = "RFC"

    #startIndex = 1000

    startIndex = int(raw_input('start : '))

    #endIndex = 6409

    endIndex = int(raw_input('end : '))

    if startIndex > endIndex : 

        print 'Input error!'        

    if False == os.path.exists(dirPath):

        os.makedirs(dirPath)    

    fileDownloadList = []

    logFile = open("log.txt","w")

    for i in range(startIndex,endIndex+1):

        try:            

            t_url = '%s/rfc%d.txt' % (addr,i)

            fileName = downloadHtmlPage(t_url)

            oldName = './'+fileName

            newName = './'+dirPath+'/'+fileName

            if True == os.path.exists(oldName):

                shutil.move(oldName,newName)

                print 'Moved ',oldName,' to ',newName

        except:

            msgLog = 'get %s failed!' % (i)

            print msgLog

            logFile.write(msgLog+'\n')

            continue

    logFile.close()

除了RFC文档,这个程序稍加修改也可以做其它事情:比如批量下载MP3、电子书等等。

好,就这些了,希望对你有帮助。

Python 相关文章推荐
python提取图像的名字*.jpg到txt文本的方法
May 10 Python
Python socket非阻塞模块应用示例
Sep 12 Python
Python上下文管理器用法及实例解析
Nov 11 Python
python实现while循环打印星星的四种形状
Nov 23 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
python 实现简单的FTP程序
Dec 27 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
Django如何使用jwt获取用户信息
Apr 21 Python
python实现经纬度采样的示例代码
Dec 10 Python
python实现马丁策略的实例详解
Jan 15 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 Python
全网非常详细的pytest配置文件
Jul 15 Python
Python制作CSDN免积分下载器
Mar 10 #Python
Python Tkinter GUI编程入门介绍
Mar 10 #Python
Python格式化css文件的方法
Mar 10 #Python
Python将xml和xsl转换为html的方法
Mar 10 #Python
Python写的Tkinter程序屏幕居中方法
Mar 10 #Python
Python生成随机密码
Mar 10 #Python
Python获取单个程序CPU使用情况趋势图
Mar 10 #Python
You might like
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
php的dl函数用法实例
2014/11/06 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
python 连接各类主流数据库的实例代码
2018/01/30 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
对Python中plt的画图函数详解
2018/11/07 Python
总结python中pass的作用
2019/02/27 Python
python机器人运动范围问题的解答
2019/04/29 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
Python 没有main函数的原因
2020/07/10 Python
详解python的变量缓存机制
2021/01/24 Python
pip install命令安装扩展库整理
2021/03/02 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
空字符串(“”)和null的区别
2012/11/13 面试题
培训演讲稿范文
2014/01/12 职场文书
小学校园活动策划
2014/01/30 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技