用于处理Web存档(WARC)文件的工具和库。
Warcat的Python项目详细描述
warcat:web存档(warc)存档工具
用于处理Web存档(WARC)文件的工具和库。
快速启动
要求:
- Python3
安装稳定版本:
pip-3 install warcat
或安装最新版本:
git clone git://github.com/chfoo/warcat.git pip-3 install -r requirements.txt python3 setup.py install
示例运行:
python3 -m warcat --help python3 -m warcat list example/at.warc.gz python3 -m warcat verify megawarc.warc.gz --progress python3 -m warcat extract megawarc.warc.gz --output-dir /tmp/megawarc/ --progress
支持的命令
- 浓度
- 天真地将存档合并为一个
- 提取
- 从存档中提取文件
- 帮助
- 列出可用的命令
- 列表
- 列出存档内容
- 通过
- 加载存档并将其写回
- 拆分
- 将存档拆分为单个记录
- 验证
- 验证摘要并验证一致性
库
示例:
>>>importwarcat.model>>>warc=warcat.model.WARC()>>>warc.load('example/at.warc.gz')>>>len(warc.records)8>>>record=warc.records[0]>>>record.warc_type'warcinfo'>>>record.content_length233>>>record.header.version'1.0'>>>record.header.fields.list()[('WARC-Type','warcinfo'),('Content-Type','application/warc-fields'),('WARC-Date','2013-04-09T00:11:14Z'),('WARC-Record-ID','<urn:uuid:972777d2-4177-4c63-9fde-3877dacc174e>'),('WARC-Filename','at.warc.gz'),('WARC-Block-Digest','sha1:3C6SPSGP5QN2HNHKPTLYDHDPFYKYAOIX'),('Content-Length','233')]>>>record.header.fields['content-type']'application/warc-fields'>>>record.content_block.fields.list()[('software','Wget/1.13.4-2608 (linux-gnu)'),('format','WARC File Format 1.0'),('conformsTo','http://bibnum.bnf.fr/WARC/WARC_ISO_28500_version1_latestdraft.pdf'),('robots','classic'),('wget-arguments','"http://www.archiveteam.org/" "--warc-file=at" ')]>>>record.content_block.fields['software']'Wget/1.13.4-2608 (linux-gnu)'>>>record.content_block.payload.length0>>>bytes(warc)[:60]b'WARC/1.0\r\nWARC-Type: warcinfo\r\nContent-Type: application/war'>>>bytes(record.content_block.fields)[:60]b'software: Wget/1.13.4-2608 (linux-gnu)\r\nformat: WARC File Fo'
注意
库可能还不是完全线程安全的。
关于
warcat项目的目标是创建一个工具和库,就像操作tar和zip等其他存档一样简单快捷。
warcat设计用于处理大型gzip-ed文件,方法是根据需要部分提取它们。
warcat是免费提供的,不能保证您的文件的安全。记得备份和测试它们!
- 主页:https://github.com/chfoo/warcat
- 文档:http://warcat.readthedocs.org/
- 有问题吗?:https://answers.launchpad.net/warcat
- 虫子?:https://github.com/chfoo/warcat/issues
- 圆周率:https://pypi.python.org/pypi/Warcat/
- 聊天:irc://irc.efnet.org/archiveteam-bs(我会在efnet上的archiveteam bs上)
规格
这个实现松散地基于iso 28500论文草案WARC_ISO_28500_version1_latestdraft.pdf和warc_ISO_DIS_28500.pdf,可以在http://bibnum.bnf.fr/WARC/找到。
文件格式
下面是一个简短的描述:
warc文件包含一个或多个连接在一起的记录。每个记录都包含命名字段、换行符、内容块、换行符和换行符。内容块可以是两种类型:{binary data}或{named fields、newline和binary data}。命名字段由字符串、冒号、字符串和换行符组成。
记录可以用gzip压缩。以.warc.gz结尾的文件名表示连接在一起的一个或多个gzip压缩文件。
开发
测试
永远记住测试。继续测试:
python3 -m unittest discover -p '*_test.py' nosetests3
待办事项
- 智能存档加入
- 记录的正则表达式筛选
- 生成磁盘索引(例如,用于快速恢复)
- 获取wget之类的文件并将其存档
- 请参见代码中的TOdo和fixme标记
- 等