对于我的NLP项目,我想从维基百科随机下载大量页面(比如10000).没有下载整个XML转储,这是我能想到的:
在第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
Run Code Online (Sandbox Code Playgroud)
Tom*_*ier 23
for i = 1 to 10000
get "http://en.wikipedia.org/wiki/Special:Random"
Run Code Online (Sandbox Code Playgroud)
Pie*_*rre 20
维基百科有一个API.使用此API,您可以获取给定命名空间中的任何随机文章:
http://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=5
Run Code Online (Sandbox Code Playgroud)
对于您调用的每篇文章,也会获得维基文本:
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Main%20Page&rvprop=content
Run Code Online (Sandbox Code Playgroud)