标签: mediawiki-api

从维基共享资源下载图片

有没有人知道如何在不注册Bot帐户的情况下以编程方式从维基共享资源下载图像?似乎获得Bot帐户批准的唯一方法是添加或编辑维基媒体上已有的信息.如果您尝试下载任何图像,没有机器人帐户,使用一些api库,您会收到错误消息而不是图像.好像他们阻止任何不从浏览器进来的人?其他人有这方面的经验吗?我在这里错过了什么吗?

image wikipedia-api mediawiki-api wikimedia-commons pywikibot

15
推荐指数
2
解决办法
1万
查看次数

解析维基百科转储

例如,使用此Wikipedia转储:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=lebron%20james&rvprop=content&redirects=true&format=xmlfm

是否有一个现有的Python库,我可以用它来创建一个带有主题和值映射的数组?

例如:

{height_ft,6},{nationality, American}
Run Code Online (Sandbox Code Playgroud)

python mediawiki wikipedia-api mediawiki-api wikimedia-dumps

15
推荐指数
3
解决办法
2万
查看次数

如何从MediaWiki wiki中永久删除页面?

我管理的MediaWiki wiki受到大量垃圾邮件的攻击.我已经设法通过使用扩展来摆脱已经添加到wiki的垃圾邮件页面,但页面的数据仍然存在于wiki的MySQL数据库中.这使数据库膨胀超过3GB.

有没有办法从wiki中永久删除垃圾邮件页面,以便将它们从数据库中完全删除?

mediawiki mediawiki-api

13
推荐指数
1
解决办法
6111
查看次数

在wiki commons中检索图像许可证和作者信息

我正在尝试使用wikimedia API for wiki commons:

http://commons.wikimedia.org/w/api.php
Run Code Online (Sandbox Code Playgroud)

似乎commons API非常不成熟,并且他们的文档中提到检索许可证和作者信息的可能性是空的.

无论如何我可以使用API​​检索包含许可信息的段落吗?(例如,本页标题为"许可"的段落).当然我可以下载整个页面并尝试解析它,但是什么是API?

wikipedia-api mediawiki-api wikimedia-commons

12
推荐指数
2
解决办法
2554
查看次数

$ getJSON和for循环问题

这是使用从MediaWiki API查询返回的结果量填充表/api.php?action=query&list=querypage&qppage=BrokenRedirects.然后将结果数添加到id,例如:

// BrokenRedirects
$.getJSON('/api.php?action=query&list=querypage&qppage=BrokenRedirects&format=json', function (data) {
    $('#BrokenRedirects').text(data.query.querypage.results.length);
});
Run Code Online (Sandbox Code Playgroud)

但是,由于它被重复了7次,我将qppage的参数变成了一个数组并使用for循环来缩短整个代码.

var array = ['BrokenRedirects',
             'DoubleRedirects',
             'Unusedcategories',
             'Unusedimages',
             'Wantedcategories',
             'Wantedfiles',
             'Wantedpages',
             'Wantedtemplates'];

for (var i = 0; i < array.length; i++) {
    $.getJSON('/api.php?action=query&list=querypage&qppage=' + array[i] + '&format=json', function (data) {
        $('#' + array[i]).text(data.query.querypage.results.length);
    });
}
Run Code Online (Sandbox Code Playgroud)

第一个没有环绕的版本有效.但是当我添加一个循环时它没有.该$getJSON部分执行,但然后无法将结果数据添加到id.我跑了它通过的JSLint其中除了抱怨在一个循环的功能,并宣布var ivar array返回的帮助不大.我对javascript相对缺乏经验,所以想到一个变量不能在循环中使用两次?除此之外,可能与在循环中使用id有关吗?

javascript mediawiki-api

11
推荐指数
1
解决办法
1万
查看次数

Wikipedia api全文搜索返回带有标题,片段和图像的文章

我一直在寻找一种基于搜索字符串查询维基百科api的方法,以获得具有以下属性的文章列表:

  • 标题
  • 摘录/说明
  • 与文章相关的一个或多个图像.

我还必须使用jsonp进行查询.

我尝试过使用list = search参数

http://en.wikipedia.org/w/api.php?action=query&list=search&prop=images&format=json&srsearch=test&srnamespace=0&srprop=snippet&srlimit=10&imlimit=1

但似乎忽略了prop = images,我也尝试使用prop = imageinfo和prop = pageimages进行变换.但他们都给我的结果与使用list = search相同.

我也尝试过action = opensearch

http://en.wikipedia.org/w/api.php?action=opensearch&search=test&limit=10&format=xml

当我设置format = xml时,这正是我想要的,但是当使用format = json时返回一个简单的页面标题数组,因此因为jsonp要求而失败.

还有另一种做法吗?我真的想在一个请求中解决这个问题,而不是使用titles = x | y | z进行第一次搜索请求然后第二次请求图像

mediawiki wikipedia wikipedia-api mediawiki-api

11
推荐指数
1
解决办法
7000
查看次数

维基百科列表=搜索REST API:如何检索匹配文章的Url

我正在学习维基百科REST API,但我找不到合适的选项来获取搜索查询的URL.

这是请求的URL:

http://it.wikipedia.org/w/api.php?action=query&list=search&srsearch=calvino&format=xml&srprop=snippet
Run Code Online (Sandbox Code Playgroud)

此请求仅输出标题和片段,但不输出文章的URL.我已经检查了维基百科API文档的list =搜索查询,但似乎没有选项来获取URL.

最诚挚的问候,Fabio Buda

api url wikipedia wikipedia-api mediawiki-api

10
推荐指数
1
解决办法
1万
查看次数

随机文章API调用正在返回用户对话页面?

我试图从WikiMedia API中随机抽取一篇文章,但我的代码似乎只抓取用户对话页...

$(document).ready(function(){
  $.getJSON("http://en.wikipedia.org/w/api.php?action=query&generator=random&prop=extracts&exchars=500&format=json&callback=?", function (data) {
    console.log(data.query.pages);
  });
});
Run Code Online (Sandbox Code Playgroud)

我读到"生成器=随机"拉随机文章,但似乎并非如此.如何让它按预期工作?

javascript wikipedia-api mediawiki-api

9
推荐指数
1
解决办法
3027
查看次数

Wikipedia Mediawiki API从URL获取Pageid

我有一套完整的网址

http://en.wikipedia.org/wiki/Episkopi_Bay
http://en.wikipedia.org/wiki/Monte_Lauro
http://en.wikipedia.org/wiki/Lampedusa
http://en.wikipedia.org/wiki/Himera
http://en.wikipedia.org/wiki/Lago_Cecita
http://en.wikipedia.org/wiki/Aspromonte
Run Code Online (Sandbox Code Playgroud)

我想找到这些URL的维基百科pageid.我之前使用过Mediawiki API,但我无法弄清楚如何做到这一点.

我尝试通过获取lastindexof("/")的子字符串和最后一个字符从URL中提取页面标题,然后查询API以获取pageid.

http://en.wikipedia.org/wiki/Episkopi_Bay --> Episkopi_Bay
http://en.wikipedia.org/wiki/Monte_Lauro --> Monte_Lauro
http://en.wikipedia.org/wiki/Lampedusa -- > Lampedusa
http://en.wikipedia.org/wiki/Himera --> Himera
http://en.wikipedia.org/wiki/Lago_Cecita --> Lago_Cecita
http://en.wikipedia.org/wiki/Aspromonte --> Aspromonte
Run Code Online (Sandbox Code Playgroud)

但问题是我的一些链接可能是重定向,因此子字符串可能并不总是页面的标题.

TL; DR:如何从URL中找到维基百科页面的pageid?

mediawiki wikipedia-api mediawiki-api mediawiki-extensions

9
推荐指数
2
解决办法
7262
查看次数

从维基百科解析出生和死亡日期?

我正在尝试编写一个python程序,可以在维基百科上搜索人们的出生和死亡日期.

例如,阿尔伯特爱因斯坦出生于1879年3月14日; 去世:1955年4月18日.

我开始用Python获取维基百科文章

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
infile = opener.open('http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=Albert_Einstein&format=xml')
page2 = infile.read()
Run Code Online (Sandbox Code Playgroud)

这项工作尽可能地发挥作用.page2是来自Albert Einstein维基百科页面的部分的xml表示.

我看了这个教程,现在我有xml格式的页面... http://www.travisglines.com/web-coding/python-xml-parser-tutorial,但我不明白怎么弄我想要的信息(出生和死亡日期)来自xml.我觉得我必须亲近,但是,我不知道如何从这里开始.

编辑

经过几次回复后,我安装了BeautifulSoup.我现在正处于可以打印的阶段:

import BeautifulSoup as BS
soup = BS.BeautifulSoup(page2)
print soup.getText()
{{Infobox scientist
| name        = Albert Einstein
| image       = Einstein 1921 portrait2.jpg
| caption     = Albert Einstein in 1921
| birth_date  = {{Birth date|df=yes|1879|3|14}}
| birth_place = [[Ulm]], [[Kingdom of Württemberg]], [[German Empire]]
| death_date  = {{Death date and age|df=yes|1955|4|18|1879|3|14}}
| …
Run Code Online (Sandbox Code Playgroud)

python mediawiki wikipedia wikipedia-api mediawiki-api

8
推荐指数
3
解决办法
4411
查看次数