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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
简单介绍Python中的readline()方法的使用
May 24 Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 Python
python绘制立方体的方法
Jul 02 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
对django中foreignkey的简单使用详解
Jul 28 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
Mar 11 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
Python基于当前时间批量创建文件
May 07 Python
Python日志模块logging用法
Jun 05 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面向对象程序设计入门教程
2019/06/22 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python生成随机图形验证码详解
2017/11/08 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
Python实现多进程的四种方式
2019/02/22 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
详解python中eval函数的作用
2019/10/22 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
python palywright库基本使用
2021/01/21 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
英文自荐信
2013/12/19 职场文书
自我鉴定写作要点
2014/01/17 职场文书
对孩子的寄语
2014/04/09 职场文书
辩护意见书
2015/06/04 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书