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通过文件头判断文件类型
Oct 30 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
Django发送邮件功能实例详解
Sep 02 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
Python谱减法语音降噪实例
Dec 18 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
在Keras中实现保存和加载权重及模型结构
Jun 15 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
239军机修复记
2021/03/02 无线电
初识laravel5
2015/03/02 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
会计实习自我鉴定
2013/12/04 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
个人自我剖析材料
2014/02/07 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
房屋转让协议书范本
2014/04/11 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫