2016-03-02 102 views
0

我想查询维基百科中所有类别页面的链接。 使用模板很容易,但我遇到类别问题。查询维基百科:从类别页面检索链接

我通常通过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; 

你碰巧有这样的例子吗?

任何帮助将不胜感激

+0

例如,我期望从结果中获得的是飞往阿尔及利亚空军C-130坠毁事故的航班和其他列出的航班的链接 –

回答

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

+0

是的,您是对的!我对链接的顺序感到困惑。非常感谢。 –