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中bisect模块用法实例
Sep 25 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
python导入pandas具体步骤方法
Jun 23 Python
Python之Class&Object用法详解
Dec 25 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
Pycharm的Available Packages为空的解决方法
Sep 18 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
Python打包exe时各种异常处理方案总结
May 18 Python
如何利用Python实现一个论文降重工具
Jul 09 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 $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP正则验证Email的方法
2015/06/15 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
javascript string字符串优化问题
2011/07/31 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
js数组操作学习总结
2013/11/04 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
Python中作用域的深入讲解
2018/12/10 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
Python类super()及私有属性原理解析
2020/06/15 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
植树节活动总结
2014/04/30 职场文书
文明礼仪标语
2014/06/13 职场文书
国际金融专业自荐信
2014/07/05 职场文书
自我管理的活动方案
2014/08/25 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis