将目录、文件和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第三方库


热门话题
java中的ssl安全imap连接   java需要输入有关我的程序在字符串中查找重复项的效率的信息   java通过值和索引搜索数组   类java队列方法需要帮助   java中泛型类中的超类   java抽屉正在缓慢滚动   在itemListner上使用显式意图时java应用程序崩溃   JAVA中的POJO和DOJO是什么?   如何使用PEM文件在Java中对PDF进行数字签名?   java读取文件并拆分其内容并存储在数组中   java JavaFX动画计时器144 fps   java Tab touch在FragmentTabHost中使用水平滑动手势时不起作用   三角数组中随机数偏置的数学方法   java Android Studio 3.0 DexArchiveBuilderException   Java中的动态XML创建   java Firebase rest API过滤器查询   java就是javax。坚持不懈EntityManager线程安全   Java Spring REST拦截器   将数据结构从java传递到perl   在java中下载文件时发生socket错误。网SocketException:连接重置