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编写C/S网络程序实例教程
Aug 25 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
python字符串中的单双引
Feb 16 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
python实现复制文件到指定目录
Oct 16 Python
Django重设Admin密码过程解析
Feb 10 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
python 遍历磁盘目录的三种方法
Apr 02 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
星际争霸中的热键
2020/03/04 星际争霸
PHP开发大型项目的一点经验
2006/10/09 PHP
php创建多级目录代码
2008/06/05 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
jquery 指南/入门基础
2007/11/30 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
工程管理专业毕业生自荐信
2014/01/24 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
青年志愿者活动方案
2014/08/17 职场文书
五年级学生期末评语
2014/12/26 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书