我正在尝试使用现有的 api 从 wikimedia 检索图像,但似乎没有什么可行和不可行的逻辑。
这是我正在做/尝试过的事情:
我正在从这个 url 获取图像查询。
http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura
这将返回一个 xml 提要,我从中获取图像名称和 url:
<img name="Jura.PNG" url="http://upload.wikimedia.org/wikipedia/en/a/ad/Jura.PNG" descriptionurl="http://en.wikipedia.org/wiki/File:Jura.PNG"/>
然后,为了获取上传者和许可证等信息,我使用了这个工具,链接在 wikimedia 上:
http://toolserver.org/~magnus/commonsapi.php
它需要参数?image=
,后跟文件名。Jura.PNG
从 xml 示例中,工作正常。但是,我尝试的大多数其他人只是返回<error>File does not exist</error>
。我测试过,文件确实存在。我无法弄清楚为什么一个文件有效,而另一个文件无效。
对于测试,另一个有效的是Calumma_tarzan_01.jpg
.
有谁知道我做错了什么?
不工作的例子:
Jurassic.jpg
Juramento_de_la_Primera_Junta.jpg
JuraDolois_logo.jpg
使用的php代码:
$xml_link = "http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=".$search_term;
$xml = simplexml_load_file( $xml_link );
$xml_link_data = "http://toolserver.org/~magnus/commonsapi.php?image=".$imgname;
$xml_data = simplexml_load_file( $xml_link_data );
var_dump($xml_data->licenses->license);
例如Jura.PNG
,正确的对象被转储,但由于其他 url 没有许可证部分,结果显然是NULL
. 但是,我认为问题不在这里,因为在浏览器中手动输入 url 也不会返回结果。