我正在尝试创建一个在互联网上找到的数字对象标识符(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个唯一的DOI。
如何浏览所有可用的CommonCrawl
索引而不是搜索以查找特定网址?
通过阅读CommonCrawl的API文档,我无法看到如何浏览所有索引以提取所有域的所有DOI。
更新
我发现了这个示例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>
实际上我尝试读取的每个文件都会导致相同的错误。那是为什么?
对于他们的数据集,正确的常见爬行uri是什么?
答案 0 :(得分:2)
自一年多以来,数据集位置发生了变化,请参阅announcement。但是,许多示例和库仍包含旧指针。您可以在s3://commoncrawl/cc-index/collections/CC-MAIN-YYYY-WW/indexes/cdx-00xxx.gz
上访问2013年所有抓取的索引文件 - 将YYYY-WW
替换为抓取的年份和周,并将xxx
展开到000-299以获取所有300个索引部分。新的抓取数据会在Common Crawl group上公布,或者详细了解how to access the data。
答案 1 :(得分:1)
要使示例代码起作用,请将第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);
另请注意,commoncrawl组有an updated example。