Como han dicho otros, un enfoque es utilizar la API de wikimedia y urllib o urllib2. Los fragmentos de código a continuación son parte de lo que utilicé para extraer lo que se llama la sección "lead", que tiene el resumen del artículo y el cuadro de información. Esto verificará si el texto devuelto es una redirección en lugar de contenido real, y también le permitirá omitir el cuadro de información si está presente (en mi caso utilicé un código diferente para extraer y formatear el cuadro de información.
contentBaseURL='http://en.wikipedia.org/w/index.php?title='
def getContent(title):
URL=contentBaseURL+title+'&action=raw§ion=0'
f=urllib.urlopen(URL)
rawContent=f.read()
return rawContent
infoboxPresent = 0
# Check if a redirect was returned. If so, go to the redirection target
if rawContent.find('#REDIRECT') == 0:
rawContent = getFullContent(title)
# extract the redirection title
# Extract and format the Infobox
redirectStart=rawContent.find('#REDIRECT[[')+11
count = 0
redirectEnd = 0
for i, char in enumerate(rawContent[redirectStart:-1]):
if char == "[": count += 1
if char == "]}":
count -= 1
if count == 0:
redirectEnd = i+redirectStart+1
break
redirectTitle = rawContent[redirectStart:redirectEnd]
print 'redirectTitle is: ',redirectTitle
rawContent = getContent(redirectTitle)
# Skip the Infobox
infoboxStart=rawContent.find("{{Infobox") #Actually starts at the double {'s before "Infobox"
count = 0
infoboxEnd = 0
for i, char in enumerate(rawContent[infoboxStart:-1]):
if char == "{": count += 1
if char == "}":
count -= 1
if count == 0:
infoboxEnd = i+infoboxStart+1
break
if infoboxEnd <> 0:
rawContent = rawContent[infoboxEnd:]
Volverás a recibir el texto en bruto, incluido el marcado de wiki, por lo que tendrás que hacer un poco de limpieza. Si solo desea el primer párrafo, no toda la primera sección, busque el primer carácter de la nueva línea.
'urllib' para obtener la página y' BeautifulSoup' para analizar HTML. Aunque hay otras formas de hacerlo, búscalas en StackOverflow. Esto ha sido discutido muchas veces. – user225312
¿qué marcado desea que tenga? mediawiki, html? – khachik
HTML. (Límite de 15 caracteres) –