【问题标题】:Query Wikipedia: retrieve links from a category page查询维基百科:从类别页面检索链接
【发布时间】:2016-03-02 18:17:56
【问题描述】:

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

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

你有这样的例子吗?

任何帮助将不胜感激

【问题讨论】:

  • 例如,我希望在结果中获得一个链接,指向阿尔及利亚空军 C-130 坠机事件和其他列出的事件

标签: mysql mediawiki categories wikipedia


【解决方案1】:

您需要使用 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

【讨论】:

  • 是的,你是对的!我对链接的顺序感到困惑。非常感谢。
  • 有没有办法在python中完成这个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
相关资源
最近更新 更多