对于我的一个NLP项目,我想从 Wikipedia 随机下载大量页面(比如 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