检查MediaWiki页面是否存在(Python)

时间:2010-03-13 19:59:32

标签: python mediawiki

我正在研究一个改变它的Python脚本:

foo
bar

进入这个:

[[Component foo]]
[[bar]]

脚本检查(每个输入行)是否存在“Component foo”页面。如果它存在,则创建指向该页面的链接,如果它不存在,则创建直接链接。

问题是我需要一个快速的&检查是否存在大量维基页面的便宜方法。我不想(尝试)下载所有“组件”页面。

我已经想出了一种快速的方法:手动执行此操作:编辑新的Wiki页面。将所有“组件”链接粘贴到页面中,按预览,然后保存生成的预览HTML页面。生成的HTML文件包含现有页面的链接,而不是不存在的页面。

所以重新解释一下我的问题:如何在Python中保存mediawiki预览页面?

(我没有对数据库的本地访问权。)

5 个答案:

答案 0 :(得分:9)

您绝对可以使用API​​来检查页面是否存在:

# assuming words is a list of words you wish to query for
import urllib

# replace en.wikipedia.org with the address of the wiki you want to access
query = "http://en.wikipedia.org/w/api.php?action=query&titles=%s&format=xml" % "|".join(words)
pages = urllib.urlopen(query)

现在您将包含xml的页面如下:

<?xml version="1.0"?><api><query><pages>

   <page ns="0" title="DOESNOTEXIST" missing="" />

   <page pageid="600799" ns="0" title="FOO" />

   <page pageid="11178" ns="0" title="Foobar" />

</pages></query></api>

不存在的页面将显示在此处,但它们具有缺少的“”“属性集,如上所示。您还可以检查保存方面的无效属性。

现在,您可以使用自己喜欢的xml解析器来检查这些属性并做出相应的反应。

另请参阅:http://www.mediawiki.org/wiki/API:Query

答案 1 :(得分:5)

使用Pywikibot与MediaWiki软件进行交互。它可能是最强大的机器人框架。

  

Python Wikipediabot Framework pywikipedia PyWikipediaBot )是一个   在MediaWiki网站上自动化工作的工具集合。本来   专为维基百科而设计,现在用于整个维基媒体   基金会的项目和许多其他MediaWiki wiki。它是写的   在Python中,这是一种免费的跨平台编程语言。这个   页面提供了想要使用的人的一般信息的链接   机器人软件。

答案 2 :(得分:2)

如果您可以本地访问wiki数据库,则最简单的方法是对数据库进行查询,以查看每个页面是否存在。

如果您只有HTTP访问权限,则可以尝试mechanize库,它允许您以编程方式自动执行原本需要浏览器的任务。

答案 3 :(得分:1)

您应该可以使用MediaWiki API。 http://www.mediawiki.org/wiki/API(可能在查询或创建/编辑下)

我不太熟悉它,但是例如,您可以将现有页面的输出与不存在的页面进行比较。

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Bill_Gates&rvprop=timestamp

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=NONEXISTENT_PAGE&rvprop=timestamp

答案 4 :(得分:0)

由于页面存储在数据库中,因此您必须以这种或那种方式访问​​。由于您没有本地访问API,正如所建议的那样,可能是它 - 但可能有其他选择。

http://www.mwusers.com/forums/forum.php

似乎是这样的问题的地方。我看到了一些问题需要对mediawiki的内部知识进行快速而全面的回答。