2017-07-27 11 views
0

インターネット上に存在するデジタルオブジェクト識別子(DOI)のデータベースを作成しようとしています。CommonCrawlを照会してDigital Object Identifier(DOI)データベースにデータを入力するJava API

手動でCommonCrawlインデックスサーバーを手動で検索すると、いくつかの有望な結果が得られました。

しかし、私はプログラム的なソリューションを開発したいと考えています。

これにより、私のプロセスでは、インデックスファイルを読み込み、基になるWARCデータファイルを読み込まなくてもよい場合があります。

私は自動化したいマニュアルの手順は、これらのは次のとおりです。 -

1)。それぞれについてCommonCrawl現在利用可能なインデックスのコレクション:

2)。私は... "Search a url in this collection: (Wildcards -- Prefix: http://example.com/* Domain: *.example.com)"を検索します。 link.springer.com/*

3)。これは約22Kの一意のDOIを含むほぼ6MBのjsonデータを返します。

はどのようにして、特定のURLの検索利用可能なすべてのCommonCrawlインデックスの代わりに、を閲覧ことができますか?

CommonCrawlのAPIドキュメントを読むと、すべてのドメインのすべてのDOIを抽出するためにすべてのインデックスを参照する方法がわかりません。

UPDATE私は、共通のクロールデータセットにアクセスする方法を示し、この例の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は何ですか?

答えて

1

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を持っていることに注意してください。

+0

s3 Javaライブラリを使用してWARCファイル内のオフセットを読み取る方法は? "archiveReader.get(10L)"を呼び出すとMarkがサポートされません – Hector

+0

私は分かりません。あなたは新しい質問を投稿したいかもしれません。しかし、あなたが[S3Object.getObject](https://jets3t.s3.amazonaws.com/api/org/jets3t/service/S3Service.html#getObject-org.jets3t.service.model)のドキュメントを見ていれば、 S3Bucket-java.lang.String-java.util.Calendar-java.util.Calendar-java.lang.String:A-java.lang.String:A-java.lang.Long-java.lang.Long-)あなた答えが見つかるかもしれません - メソッドがオフセット引数を受け入れるように見えます。 –

2

データセットの場所が1年以上経過してから変更されました。announcementを参照してください。しかし、多くの例とライブラリには古いポインタが含まれています。 s3://commoncrawl/cc-index/collections/CC-MAIN-YYYY-WW/indexes/cdx-00xxx.gzで2013年までのすべてのクロールのインデックスファイルにアクセスできます。YYYY-WWをクロールの年と週に置き換え、から000-299までを展開して300のインデックスパーツすべてを取得します。新しいクロールデータはCommon Crawl groupで、またはhow to access the dataについては詳細をご覧ください。ライン24と25を置き換える動作するサンプルコードを取得するには

+0

これでhttps://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2016-18/segments/1461860106452.21/warc/CC-MAIN-20160428161506-00000-ip-10-239を入手できるようになりました。 -7-51.ec2.internal.warc.gzただし、私はs3:// commoncrawl/prefixで試してみると、私のJavaコード(上の図)でも同じエラーが出ます。このコードを介してパブリックs3データセットにアクセスするためにAmazonアカウントイベントを設定する必要がありますか? – Hector

+1

AWSアカウントなしでデータにアクセスすることは可能です。最も簡単なのは[AWS CLI](https://aws.amazon.com/cli/)と 'aws --no-sign-request s3 ... 'です。 [cc-warc-examples](https://github.com/commoncrawl/cc-warc-examples)は、Common Crawlデータがホストされているus-east-1地域のAWSのHadoopクラスタから実行されるはずです。 –

関連する問題