将目录、文件和zip文件转换为web存档(warc)

warcit的Python项目详细描述


warcit是一个命令行工具,用于将web文档(通常是html、web资产和任何其他数据文件)的磁盘目录转换为iso标准web存档(warc)文件。

转换为warc文件允许以标准格式提高持久性,并允许将存储在磁盘上的任何web文件上载到Webrecorder,或使用Webrecorder Playerpywb本地重播

(许多其他工具也操作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检测如下:

  1. 如果文件名与通过--mime-overrides指定的重写匹配,请将其用作mime类型。
  2. 如果mimetypes.guess_type()返回有效的mime类型,请将其用作mime类型。
  3. 如果指定了--use-magic标志,请使用magicapi来确定mime类型(如果使用此标志时magic不可用,warcit将出错)。
  4. 如果以前的所有尝试都没有生成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-DateWARC-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记录

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

推荐PyPI第三方库


热门话题
使用Scala对Java进行单元测试?   java无法将应用程序部署到Tomcat   java如何在IntelliJ IDEA中创建补丁?   java如何在安卓中编程设置列表视图高度   java如何使用charAt检查字符串是否以AZ或AZ开头?   java在SQL查询中使用非限制值   java函数在不同的Android版本中返回不同的datetime值   java方法应该在实现动作的类中,还是在实现的类中?   java从另一个线程的类访问线程类的公共静态arrayList   java是否像重新引发相同的异常?   java如何从localhost访问本地文件   javaurl。openStream非常慢   java数组越界和空指针异常   java我只是在某种程度上破坏了Netbeans,我不知道如何修复它   java是否可以延迟类的加载,而这些类可能在以后动态加载?   java断开外壳输出到文件   从blob服务回调时出现java Google应用程序引擎错误   java将SparseArray存储在JSON中并使用它   使用IText for Java进行pdf文本定位   java如何更改SearchView的样式?