gpt4 book ai didi

java - 如何使用 HeaderedArchiveRecord 和 Heritrix 3.1 循环访问 WARC 文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:06 25 4
gpt4 key购买 nike

我正在使用 Heritrix 3.1 Java 库。需要明确的是,我对爬行不感兴趣,而只对处理另一个团队生成的压缩 WARC (*.warc.gz) 文件中的数据感兴趣。对于存储在 WARC 文件中的每个 WWW 文档,我需要来自记录 header 的一些信息、一些来自 HTTP header 的信息以及 HTTP 负载/正文的完整内容,因此我认为我需要使用 HeaderedArchiveRecord 类。

WARCReader warcReader = WARCReaderFactory.get(warcFile);
int inputSequence = -1;

ArchiveRecord record = warcReader.get();
while(record != null){
inputSequence++;

// Skip the 0th record, which is just the archive guff.
if (inputSequence == 0) {
// print some info but do not process this record
}
else if (! record.hasContentHeaders()) {
// print some info but do not process this record
}
else {
HeaderedArchiveRecord hRecord = new HeaderedArchiveRecord(record);
ArchiveRecordHeader archiveHeader = hRecord.getHeader();
gate.Document document = makeDocumentHeritrix(archiveHeader,
inputSequence, hRecord);
//...
}
record.close();
record = warcReader.get(); // line 754
}

warcReader.close();

当我运行这个时,我得到一个异常,因为这个原因

Caused by: java.io.IOException: Failed to read WARC_MAGIC
at org.archive.io.warc.WARCRecord.parseHeaders(WARCRecord.java:116)
at org.archive.io.warc.WARCRecord.<init>(WARCRecord.java:90)
at org.archive.io.warc.WARCReader.createArchiveRecord(WARCReader.java:94)
at org.archive.io.warc.WARCReader.createArchiveRecord(WARCReader.java:44)
at org.archive.io.ArchiveReader.get(ArchiveReader.java:159)
at
gate.arcomem.batch.Enrichment.makeCorpusWithHeritrix(Enrichment.java:754)

我的第 754 行如上所示。我的 makeDocumentHeritrix(...) 方法中的代码曾经引发类似的异常,但Failed to find WARC_MAGIC,直到我将行 hrecord.skipHttpHeader(); 移至其中的 Header[] httpHeader = record.getContentHeaders(); 之前。

我尝试在网络上搜索循环 WARC 文件中记录的代码示例,但没有找到任何示例,而且我记得几年前,当我使用 heritrix 1.14 做类似的事情时,我必须做一些奇怪的事情来操作文件中的偏移量,但 WARCReader 中的相关方法现在都是私有(private)或 protected ,因此我不希望在较新的库中这样做。

最佳答案

我使用以下代码取得了成功:

Iterator<ArchiveRecord> archIt = WARCReaderFactory.get(new File(args[0])).iterator();
while (archIt.hasNext()) {
handleRecord(archIt.next());
}

关于java - 如何使用 HeaderedArchiveRecord 和 Heritrix 3.1 循环访问 WARC 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21664698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com