将Wikia转储解析为链接图

时间:2015-12-08 08:59:06

标签: python xml mediawiki wikia

我试图从wikia转储中解析xml以取出子元素,然后在[[and]]标识的文本中查找链接。因此,从以下一个wiki的示例代码中我们应该得到

<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
  <siteinfo>
    <sitename>Wookieepedia</sitename>
    <base>http:///10.8.66.74/wiki/Main_Page</base>
    <generator>MediaWiki 1.19.24</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
...
      <namespace key="1202" case="first-letter">Message Wall Greeting</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>Brianna</title>
    <ns>0</ns>
    <id>5</id>
...
    <text xml:space="preserve" bytes="36038">{{Eras|old|featured}}
{{Youmay|the [[Echani]] [[hybrid]]|the [[Brianna (Human)|Human]]}}
{{Character
|type=Jedi
...

以上将确定Brianna页面链接到Echani页面,以及“混合”和“Brianna(人类)”页面。

是否有一个很好的mediawiki解析工具可以吐出来的python?性能不是主要问题,因为这是离线完成的,而且这些wiki并不是很大。

1 个答案:

答案 0 :(得分:0)

您的方法不合理:请改用links API。有多个Python clients。除非绝对强制,否则永远不要自己解析wiki文本!

另请注意,对于所有wiki而不是小wiki,Wikia的转储完全被破坏(在随机点被截断)。另请参阅https://archive.org/details/wikia_dump_20141219https://github.com/Wikia/app/pull/6118#issuecomment-183633326