4

私のNLPプロジェクトでは、ウィキペディアから多数のページ (たとえば 10000) をランダムにダウンロードしたいと考えています。XML ダンプ全体をダウンロードしなくても、次のように考えることができます。

  1. ウィキペディアのページを開く
  2. リンクの HTML を幅優先検索方式で解析し、各ページを開く
  3. 2で取得したページのリンクを再帰的に開く

ステップ 2 と 3 で、必要なページ数に達したら終了します。

どのようにしますか?あなたが考えるより良いアイデアを提案してください。

答え: これは私の Python コードです:

# Get 10000 random pages from Wikipedia.
import urllib2
import os
import shutil
#Make the directory to store the HTML pages.
print "Deleting the old randompages directory"
shutil.rmtree('randompages')

print "Created the directory for storing the pages"
os.mkdir('randompages')

num_page = raw_input('Number of pages to retrieve:: ')

for i in range(0, int(num_page)):
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    infile = opener.open('http://en.wikipedia.org/wiki/Special:Random')

    page = infile.read()

    # Write it to a file.
    # TODO: Strip HTML from page
    f= open('randompages/file'+str(i)+'.html','w')
    f.write(page)
    f.close()

    print "Retrieved and saved page",i+1
4

6 に答える 6

24
for i = 1 to 10000
    get "http://en.wikipedia.org/wiki/Special:Random"
于 2010-01-03T13:49:43.493 に答える
20

ウィキペディアにはAPIがあります。この API を使用すると、特定の名前空間で任意の記事をランダムに取得できます。

http://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=5

また、呼び出す記事ごとに wiki テキストも取得します。

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Main%20Page&rvprop=content
于 2010-01-03T13:52:34.730 に答える
1

私は逆に、XML ダンプから始めて、不要なものを破棄します。

あなたの場合、自然言語処理を行おうとしているのであれば、リンクのリストではなく、完全な文を含むページに関心があると思います。説明した方法でリンクをスパイダーすると、多くのリンク ページにアクセスすることになります。

また、選択プロセスを容易にする XML 解析ツールを使用するメリットがあるのに、なぜ XML を避けるのでしょうか?

于 2010-01-03T13:53:03.107 に答える
0

長くなってしまいましたが、robot.txt ファイルに違反せずに多数のウィキペディア ページ (またはウィキペディア全体) をクロールしてダウンロードする効率的な方法をまだ探している人には、'Webb' ライブラリが役立ちます。リンクは次のとおりです。

WebクロールとスクラップのためのWebbライブラリ

于 2015-07-26T23:12:03.070 に答える
0

ほとんどの要件を回避できる可能性があります。

http://cs.fit.edu/~mmahoney/compression/enwik8.zip

は 100 MB のウィキペディアを含む ZIP ファイルであり、既に引き出されています。リンクされたファイルのサイズは ~ 16 MB です。

于 2010-01-03T13:51:44.457 に答える
0

DBpedia プロジェクトを見てください。

少なくともいくつかの記事の URL を含む小さなダウンロード可能なチャンクがあります。10000を解析したら、慎重にバッチダウンロードできます...

于 2010-01-03T13:51:58.950 に答える