Если вы имеете в виду «я хочу получить только викитекст», посмотрите на класс wikipedia.Page
и метод get
.
import wikipedia
site = wikipedia.getSite('en', 'wikipedia')
page = wikipedia.Page(site, 'Test')
print page.get() # '''Test''', '''TEST''' or '''Tester''' may refer to:
#==Science and technology==
#* [[Concept inventory]] - an assessment to reveal student thinking on a topic.
# ...
Таким образом, вы получите полный, сырой вики-текст из статьи.
Если вы хотите исключить синтаксис вики, как преобразовать [[Concept inventory]]
в инвентарь Концепции и т. Д., Это будет немного более болезненным.
Основная причина этой проблемы заключается в том, что синтаксис вики MediaWiki не имеет определенной грамматики. Что делает его действительно трудно разобрать и раздеть. В настоящее время я не знаю программного обеспечения, которое позволяет вам делать это точно. Конечно, есть класс MediaWiki Parser, но это PHP, его немного сложно понять, и его назначение очень сильно отличается.
Но если вы хотите удалить только ссылки или очень простые вики-конструкции, используйте регулярные выражения:
text = re.sub('\[\[([^\]\|]*)\]\]', '\\1', 'Lorem ipsum [[dolor]] sit amet, consectetur adipiscing elit.')
print text #Lorem ipsum dolor sit amet, consectetur adipiscing elit.
, а затем для трубопроводных ссылок:
text = re.sub('\[\[(?:[^\]\|]*)\|([^\]\|]*)\]\]', '\\1', 'Lorem ipsum [[dolor|DOLOR]] sit amet, consectetur adipiscing elit.')
print text #Lorem ipsum DOLOR sit amet, consectetur adipiscing elit.
и т. Д.
Но, например, не существует надежного и простого способа вырезать вложенные шаблоны со страницы. И то же самое относится к изображениям, которые имеют ссылки в комментариях. Это довольно сложно и требует рекурсивного удаления самой внутренней ссылки, замены ее маркером и начала заново. Посмотрите на функцию templateWithParams
в wikipedia.py, если хотите, но это не очень красиво.