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基础之I/O模型
May 11 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
python opencv 图像尺寸变换方法
Apr 02 Python
python实现pdf转换成word/txt纯文本文件
Jun 07 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
Python的缺点和劣势分析
Nov 19 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
python 检测图片是否有马赛克
Dec 01 Python
python链表类中获取元素实例方法
Feb 23 Python
python中pycryto实现数据加密
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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
一个PHP的ZIP压缩类分享
2014/05/04 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
Python csv文件记录流程代码解析
2020/07/16 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
办公室内勤工作职责
2013/12/11 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
销售行政专员职责
2014/01/03 职场文书
天网工程实施方案
2014/03/26 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
2014年司法局工作总结
2014/12/11 职场文书
党员思想汇报材料
2014/12/19 职场文书
公司开除员工通知
2015/04/22 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers