我正在尝试创建一个在互联网上找到的数字对象标识符(DOI)数据库。
通过手动搜索CommonCrawl索引服务器,取得了一些有希望的结果。
然而,我希望制定一个方案性的解决办法。
这可能导致我的过程只需要读取索引文件,而不需要读取底层WARC数据文件。
我希望自动化的手动步骤如下:
1)。对于每个当前可用的CommonCrawl索引集合:
2)。我搜索. "Search a url in this collection: (Wildcards -- Prefix: http://example.com/* Domain: *.example.com)“例如link.springer.com/*
3)。这将返回几乎6MB的json数据,其中包含大约22K的唯一DOIs。
如何浏览所有可用的CommonCrawl索引而不是搜索以寻找特定的URL?
通过阅读CommonCrawl的API文档,我无法看到如何浏览所有索引来提取所有域的所有DOIs。
更新
我找到了这个示例java代码https://github.com/Smerity/cc-warc-examples/blob/master/src/org/commoncrawl/examples/S3ReaderTest.java。
它显示了如何访问公共爬行数据集。
然而,当我运行它时,我会收到这个异常。
"main" org.jets3t.service.S3ServiceException: Service Error Message. -- ResponseCode: 404, ResponseStatus: Not Found, XML Error Message: <?xml version="1.0" encoding="UTF-8"?><Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message><Key>common-crawl/crawl-data/CC-MAIN-2016-26/segments/1466783399106.96/warc/CC-MAIN-20160624154959-00160-ip-10-164-35-72.ec2.internal.warc.gz</Key><RequestId>1FEFC14E80D871DE</RequestId><HostId>yfmhUAwkdNeGpYPWZHakSyb5rdtrlSMjuT5tVW/Pfu440jvufLuuTBPC25vIPDr4Cd5x4ruSCHQ=</HostId></Error>事实上,我试图读取的每个文件都会导致相同的错误。为什么会这样呢?
对于他们的数据集,正确的普通爬行器是什么?
发布于 2017-07-28 13:06:11
要使示例代码工作,请将第24和第25行替换为:
String fn = "crawl-data/CC-MAIN-2013-48/segments/1386163035819/warc/CC-MAIN-20131204131715-00000-ip-10-33-133-15.ec2.internal.warc.gz";
S3Object f = s3s.getObject("commoncrawl", fn, null, null, null, null, null, null);还请注意公共爬虫组有更新的示例。
https://stackoverflow.com/questions/45347907
复制相似问题