用于处理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是免费提供的,不能保证您的文件的安全。记得备份和测试它们!

规格

这个实现松散地基于iso 28500论文草案WARC_ISO_28500_version1_latestdraft.pdfwarc_ISO_DIS_28500.pdf,可以在http://bibnum.bnf.fr/WARC/找到。

文件格式

下面是一个简短的描述:

warc文件包含一个或多个连接在一起的记录。每个记录都包含命名字段、换行符、内容块、换行符和换行符。内容块可以是两种类型:{binary data}或{named fields、newline和binary data}。命名字段由字符串、冒号、字符串和换行符组成。

记录可以用gzip压缩。以.warc.gz结尾的文件名表示连接在一起的一个或多个gzip压缩文件。

开发

Travis build status

测试

永远记住测试。继续测试:

python3 -m unittest discover -p '*_test.py'
nosetests3

待办事项

  • 智能存档加入
  • 记录的正则表达式筛选
  • 生成磁盘索引(例如,用于快速恢复)
  • 获取wget之类的文件并将其存档
  • 请参见代码中的TOdo和fixme标记

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么即使我已经给出了代码中的所有权限,该代码也没有在emulator中运行?   java Android Studio正在抛出“线程中的异常”main“javax.net.ssl.SSLException:收到致命警报:协议\版本”   java中的for循环嵌套foreach语句   java读取/src/main/resources和/webinf/classes下的文件   java无法以此格式构造JSON响应   身份验证尝试从CAS secure rest api获取响应,但从java客户端获取登录页面作为响应   如何在java中使用excel从第1列和第3列获取单元格值,并将其作为键值对放入map中   在Java程序中打开Windows虚拟键盘   java有没有递归调用findMatch的方法?   java Pig脚本/命令,用于根据多个字符串筛选文件   java最小数量应匹配,应与POST匹配   java打开/关闭声音按钮不工作   Java嵌入式数据库持久性   java在方法调用时引发异常   java文本文件被覆盖而不是保存的问题   java Hibernate sql注释