1

Wikipedia 上有很多不是文章的页面,例如讨论页等。如何通过 URL 将它们与文章区分开来?

4

2 回答 2

2

简短的回答是你不能单独使用正则表达式。

更长的答案是 MediaWiki 文章按名称空间划分,而名称空间又使用冒号作为标记,如“Talk:Foo”。因此,标题中没有冒号的文章肯定位于主(= 内容)命名空间中。问题是,带有冒号的文章可能在另一个命名空间中,或者恰好包含冒号的内容文章,并且由于 WP 的命名空间列表很长且不断变化,您不能(或至少不应该)硬编码这个列表在一个正则表达式中。

因此,正确的答案是使用MediaWiki API仅在主命名空间中迭代/搜索文章。

于 2013-04-22T22:21:14.313 回答
1

您可以通过使用其 API 和以下查询来获取 Wikipedia 名称空间及其别名的列表:

http://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=namespaces

然后,如果第一个冒号之前的页面标题部分与任何已知的命名空间匹配,则它不是文章;否则,它是。

于 2013-04-22T22:48:08.300 回答