将目录、文件和zip文件转换为web存档(warc)
warcit的Python项目详细描述
warcit是一个命令行工具,用于将web文档(通常是html、web资产和任何其他数据文件)的磁盘目录转换为iso标准web存档(warc)文件。
转换为warc文件允许以标准格式提高持久性,并允许将存储在磁盘上的任何web文件上载到Webrecorder,或使用Webrecorder Player或pywb本地重播
(许多其他工具也操作warc文件,请参见:Awesome Web Archiving – Tools and Software)
warcit支持将单个文件、目录(包括任何嵌套目录)以及zip文件转换为warc。
基本用法
warcit <prefix> <dir or file> ...
有关标志和选项的完整列表,请参见warcit -h。
例如,下面的示例将通过wget下载一个简单的网站(为了简单起见,这只检索一个级别的deep),然后使用warcit转换为www.iana.org.warc.gz:
wget -l 1 -r www.iana.org/ warcit http://www.iana.org/ ./www.iana.org/
warcwww.iana.org.warc.gz现在应该已经创建了!
mime类型检测和重写
默认情况下,warcit支持默认的pythonmimetypes库,以根据文件扩展名确定mime类型。
但是,它还支持使用python-magic(libmagic)(如果可用)和通过命令行配置的自定义mime重写。
mime检测如下:
- 如果文件名与通过--mime-overrides指定的重写匹配,请将其用作mime类型。
- 如果mimetypes.guess_type()返回有效的mime类型,请将其用作mime类型。
- 如果指定了--use-magic标志,请使用magicapi来确定mime类型(如果使用此标志时magic不可用,warcit将出错)。
- 如果以前的所有尝试都没有生成mime类型,则默认为text/html。
--mime-overrides标志可用于指定通配符查询(应用于完整url)和相应的mime类型作为逗号分隔属性列表:
warcit '--mime-overrides=*.html=text/html; charset="utf-8",image.ico=image/png' http://www.iana.org/ ./www.iana.org/
当遇到以*.html或*.ico结尾的url时,通过传递任何自动检测,指定的mime类型将用于Content-Type头。
字符集检测
默认情况下禁用字符集检测,但可以使用--charset auto标志启用。
使用cchardet本机chardet库进行检测。
也可以指定特定的字符集,例如--charsetutf-8将向所有text/*资源添加; charset=utf-8。
如果检测不产生结果,或者结果是ascii,则不会向Content-Type添加字符集。
压缩文件
warcit还支持将zip文件转换为warcs,包括部分zip文件。
例如,如果zip文件包含:
my_zip_file.zip | +-- www.example.com/ | +-- another.example.com/ | +-- some_other_data/
可以在zip文件中分别指定要转换为warc的两个路径:
warcit --name my-warc.gz http:// my_zip_file.zip/www.example.com/ my_zip_file.zip/another.example.com/
这将导致一个新的warcmy-warc.gz转换指定的zip文件路径。未处理some_other_data路径。
warc结构和格式
该工具生成iso标准warc 1.0文件。
除非指定了--no-warcinfo标志,否则将在warc的开头添加warcinfo记录。
warcinfo记录包含完整的命令行和warcit版本:
WARC/1.0 WARC-Type: warcinfo WARC-Record-ID: ... WARC-Filename: example.com.warc.gz WARC-Date: 2017-12-05T18:30:58Z Content-Type: application/warc-fields Content-Length: ... software: warcit 0.2.0 format: WARC File Format 1.0 cmdline: warcit --fixed-dt 2011-02 http://example.com/ ./path/to/somefile.html
目录中指定或找到的每个文件都存储为warcresource记录。
默认情况下,warcit使用文件修改日期作为每个url的WARC-Date。 通过指定--fixed-dt标志,可以使用固定日期时间覆盖此设置。 日期时间可以指定为--fixed-dtYYYY-MM-DDTHH:mm:ss或--fixed-dt YYYYMMDDHHmmss或部分日期, 例如--fixed-dtYYYY-MM
实际的warc创建时间和磁盘上源文件的路径也会存储,使用WARC-Created-Date 和WARC-Source-URI扩展头。
例如,如果在运行warcit --fixed-dt2011-02http://example.com/ ./path/to/somefile.html时,生成的warc记录可能如下所示:
WARC/1.0 WARC-Date: 2011-02-01T00:00:00Z WARC-Created-Date: 2017-12-05T18:30:58Z WARC-Source-URI: file://./path/to/somefile.html WARC-Type: resource WARC-Record-ID: ... WARC-Target-URI: http://www.example.com/to/somefile.html Content-Type: text/html Content-Length ... ...
此外,如果存在索引文件,warcit还会为顶级目录添加revisit记录。 索引文件可以通过--index-filesfl指定ag,默认值是--index-files=index.html,index.htm
例如,运行时: {TT44 } $,并且存在一个文件:^ {TT45 } $,WARCIT将创建:
- http://example.com/path/subdir/index.html 的resource记录
- 指向http://example.com/path/subdir/index.html 的revisit记录