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 相关文章推荐
python3读取MySQL-Front的MYSQL密码
May 03 Python
深入理解Python中的*重复运算符
Oct 28 Python
python版微信跳一跳游戏辅助
Jan 11 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
用pycharm开发django项目示例代码
Jun 13 Python
django创建超级用户过程解析
Sep 18 Python
python多进程并行代码实例
Sep 30 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
pycharm sciview的图片另存为操作
Jun 01 Python
python中数字是否为可变类型
Jul 08 Python
Python使用pyenv实现多环境管理
Feb 05 Python
Python基础之元类详解
Apr 29 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模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
js charAt的使用示例
2014/02/18 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
pyqt5实现登录界面的模板
2020/05/30 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
python实现批量命名照片
2020/06/18 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
new修饰符是起什么作用
2015/06/28 面试题
公司前台辞职报告
2014/01/19 职场文书
大班上学期个人总结
2015/02/13 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
《正比例》教学反思
2016/02/23 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript