<p>对于我的一个<a href="http://en.wikipedia.org/wiki/Natural_language_processing" rel="nofollow noreferrer">NLP</a>项目,我想从Wikipedia随机下载大量页面(比如10000个)。在不下载整个XML转储文件的情况下,我可以这样想:</p>
<ol>
<li>打开维基百科页面</li>
<li>以广度优先的搜索方式解析HTML中的链接并打开每个页面</li>
<li>递归打开2中获得的页面上的链接</li>
</ol>
<p>在第2步和第3步中,如果达到了我想要的页数,我将退出。在</p>
<p>你会怎么做?请提出你能想到的更好的主意。在</p>
<p>答:这是我的Python代码:</p>
<pre><code># 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
</code></pre>