2013-02-23 60 views
2

我试图通过URL来在文件命名空间的页面下载来自于维基共享图像:wget wikimedia图片?

wget http://commons.wikimedia.org/wiki/File:A_golden_tree_during_the_golden_season.JPG 

我得到的是一个JPG文件,该文件无法打开。但是,当你去链接你实际上看到的页面,而不是图像本身,但有一个名为“全分辨率”的链接,将您发送到的实际图像链接是:http://upload.wikimedia.org/wikipedia/commons/9/92/A_golden_tree_during_the_golden_season.JPG

我该如何下载此文件只有第一个链接?

+1

为什么[tag:bash]?你将不得不在这里做一些HTML解析。你有没有考虑过使用[tag:python],[tag:perl],[tag:clojure] ...? – Johnsyweb 2013-02-23 02:31:32

+0

不擅长那些......:/ – 2013-02-23 02:36:00

+2

@AltinUkshini:好的,学习。用Python做并不难。 – Blender 2013-02-23 02:36:37

回答

0
+2

这似乎是在问题中理解。 – Johnsyweb 2013-02-23 02:26:24

+0

是的,我知道,但我想从第一个链接得到它... 我有一个图像名称列表,我可以做一个wget链接/文件:imagename 但这并不工作bcs我下载的图像无法打开 – 2013-02-23 02:30:27

+0

问题改变了! – kkaehler 2013-02-26 19:19:23

2

你可以尝试以下方法:

wget http://commons.wikimedia.org/wiki/File:A_golden_tree_during_the_golden_season.JPG -O output.html; wget $(cat output.html | grep fullMedia | sed 's/\(.*href="\/\/\)\([^ ]*\)\(" class.*\)/\2/g') 

第一wget获取您指定的链接。我浏览了几页,发现高分辨率图像在div下,class = fullMedia。它解析图像的URL,然后获取该图像。

PS:如上所述,bash不是一个简单的方法。你应该看看解析dom树的东西。

+1

+1:您的研究工作值得您信赖。 – Johnsyweb 2013-02-23 07:19:25

+0

@Johnsyweb非常感谢:-) – jitendra 2013-02-23 07:20:50

+0

index.php的action = view(这里都是通过重写规则和MediaWiki默认值隐式使用)的输出取决于各种因素,并可能随时发生意外更改。不要依赖那个。或者使用[API](http://commons.wikimedia.org/w/api.php?action=query&prop=imageinfo&iiprop=url&titles=File:A_golden_tree_during_the_golden_season.JPG)或者提取没有命名空间的标题并传递给[[Special :重定向]],正如我在下面的回复中所建议的那样。 – 2014-06-02 16:10:08

2

提取不带名称空间的标题(A_golden_tree_during_the_golden_season.JPG)并将其传递到Special:Redirect

wget http://commons.wikimedia.org/wiki/Special:Redirect/file/$(echo 'http://commons.wikimedia.org/wiki/File:A_golden_tree_during_the_golden_season.JPG' | sed 's/.*\/File\:\(.*\)/\1/g')