如果您的意思是“我只想获取 wikitext”,请查看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.
# ...
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以从文章中获得完整的原始维基文本。
如果你想去掉 wiki 语法,就像转换[[Concept inventory]]成概念清单等等,那会更痛苦一些。
这个麻烦的主要原因是MediaWiki wiki语法没有定义的语法。这使得解析和剥离变得非常困难。我目前知道没有软件可以让您准确地做到这一点。当然有 MediaWiki Parser 类,但它是 PHP,有点难以掌握,而且它的用途非常不同。
但是,如果您只想删除链接,或者非常简单的 wiki 结构,请使用正则表达式:
text = re.sub('\[\[([^\]\|]*)\]\]', '\\1', 'Lorem ipsum [[dolor]] sit amet, consectetur adipiscing elit.')
print text #Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Run Code Online (Sandbox Code Playgroud)
然后对于管道链接:
text = re.sub('\[\[(?:[^\]\|]*)\|([^\]\|]*)\]\]', '\\1', 'Lorem ipsum [[dolor|DOLOR]] sit amet, consectetur adipiscing elit.')
print text #Lorem ipsum DOLOR sit amet, consectetur adipiscing elit.
Run Code Online (Sandbox Code Playgroud)
等等。
但是,例如,没有可靠的简单方法可以从页面中去除嵌套模板。评论中包含链接的图像也是如此。这非常困难,涉及递归删除最内部的链接并用标记替换它并重新开始。templateWithParams如果您愿意,可以查看wikipedia.py中的函数,但它并不漂亮。
| 归档时间: |
|
| 查看次数: |
872 次 |
| 最近记录: |