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 相关文章推荐
ptyhon实现sitemap生成示例
Mar 30 Python
python读取浮点数和读取文本文件示例
May 06 Python
Python实现的百度站长自动URL提交小工具
Jun 27 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
Python项目跨域问题解决方案
Jun 22 Python
Python 没有main函数的原因
Jul 10 Python
python 安装移动复制第三方库操作
Jul 13 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
详解python字符串驻留技术
May 21 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连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
js控制frameSet示例
2013/09/10 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
HTTP状态码详解
2021/03/18 杂记
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
会计毕业生自荐信
2013/11/21 职场文书
总经理的岗位职责
2014/02/23 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
初三英语教学计划
2015/01/23 职场文书
介绍长城的导游词
2015/01/30 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang