我试图从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并不是很大。
答案 0 :(得分:0)
您的方法不合理:请改用links API。有多个Python clients。除非绝对强制,否则永远不要自己解析wiki文本!
另请注意,对于所有wiki而不是小wiki,Wikia的转储完全被破坏(在随机点被截断)。另请参阅https://archive.org/details/wikia_dump_20141219和https://github.com/Wikia/app/pull/6118#issuecomment-183633326