私のNLPプロジェクトでは、ウィキペディアから多数のページ (たとえば 10000) をランダムにダウンロードしたいと考えています。XML ダンプ全体をダウンロードしなくても、次のように考えることができます。
- ウィキペディアのページを開く
- リンクの HTML を幅優先検索方式で解析し、各ページを開く
- 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