查询维基百科:从类别页面检索链接

时间:2016-03-02 18:17:57

标签: mysql mediawiki categories wikipedia

我正在尝试查询维基百科中类别页面的所有页面链接。 使用模板很容易,但我遇到了类别问题。

我通常通过ssh登录维基百科... @ tools-login.wmflabs.org 并访问他们的mysql数据库。

例如,对于我通常做的模板:

SELECT pl.pl_title
FROM page p
JOIN pagelinks pl on p.page_id=pl.pl_from
WHERE p.page_title='Aviation_accidents_and_incidents_in_2014' AND
      p.page_namespace=10 AND
      pl.pl_namespace=0;

此查询轻松为我提供了此页面的所有页面链接https://en.wikipedia.org/wiki/Template:Aviation_accidents_and_incidents_in_2014

如果我想对类别页面https://en.wikipedia.org/wiki/Category:Aviation_accidents_and_incidents_in_2004执行相同操作:

SELECT pl.pl_title
FROM page p
JOIN pagelinks pl on p.page_id=pl.pl_from
WHERE p.page_title='Aviation_accidents_and_incidents_in_2014' AND
      p.page_namespace=14 AND
      pl.pl_namespace=0;

它什么都不返回。

我尝试了其他组合,但仍然无法得到它(零结果)。

SELECT pl.pl_title
FROM category c
JOIN pagelinks pl on c.cat_id=pl.pl_from
WHERE c.cat_title='Aviation_accidents_and_incidents_in_2014' AND
      pl.pl_namespace=0;

你碰巧有这样的例子吗?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您需要使用MediaWiki的categorylinks table

SELECT p.page_title
FROM categorylinks AS cl
JOIN page AS p ON p.page_id=cl.cl_from
WHERE cl.cl_to='Aviation_accidents_and_incidents_in_2014';

查看结果here