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, или читайте больше о том, как получить доступ к данным.