Java API для запроса CommonCrawl для заполнения базы данных цифрового идентификатора объекта (DOI)

Я пытаюсь создать базу данных цифрового идентификатора объекта (DOI), найденную в Интернете.

Путем ручного поиска CommonCrawl Индекс-сервер вручную я получил несколько многообещающих результатов.

Однако я хочу разработать программное решение.

Это может привести к тому, что моему процессу потребуется только чтение файлов индекса, а не базовых файлов данных WARC.

Ручные шаги, которые я хочу автоматизировать, таковы:

1). для каждого CommonCrawl В настоящее время доступны коллекции индексов:

2). Я ищу... "Search a url in this collection: (Wildcards -- Prefix: http://example.com/* Domain: *.example.com) например link.springer.com/*

3). это возвращает почти 6 МБ данных JSON, которые содержат около 22 000 уникальных DOI.

Как я могу просмотреть все доступные CommonCrawl индексы вместо поиска конкретных URL?

Из прочтения документации API для CommonCrawl я не вижу, как я могу просмотреть все индексы, чтобы извлечь все 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 для их наборов данных?

2 ответа

Решение

Чтобы заставить пример кода работать, замените строки 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 есть обновленный пример.

Расположение набора данных изменилось более чем за один год, см. Объявление. Тем не менее, многие примеры и библиотеки все еще содержат старые указатели. Вы можете получить доступ к индексным файлам для всех сканирований до 2013 года на s3://commoncrawl/cc-index/collections/CC-MAIN-YYYY-WW/indexes/cdx-00xxx.gz - заменить YYYY-WW с годом и неделей ползать и расширяться xxx на 000-299, чтобы получить все 300 частей индекса. Новые данные о сканировании объявляются в группе Common Crawl, или читайте больше о том, как получить доступ к данным.

Другие вопросы по тегам