当前位置:  开发笔记 > 编程语言 > 正文

如何使用urllib从网上下载图像

如何解决《如何使用urllib从网上下载图像》经验,为你挑选了1个好方法。

我正在尝试使用以下代码下载图像:

from urllib import urlretrieve
urlretrieve('http://gdimitriou.eu/wp-content/uploads/2008/04/google-image-search.jpg', 
            'google-image-search.jpg')

有效.图像已下载,可由任何图像查看器软件打开.


但是,下面的代码不起作用.下载的图像只有2KB,任何图像查看器都无法打开.

from urllib import urlretrieve
urlretrieve('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg', 
            'Zindagi1976.jpg')

这是HTML格式的结果.

    ERROR

The requested URL could not be retrieved

While trying to retrieve the URL: http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg

The following error was encountered:

Access Denied.
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.

Your cache administrator is nobody. 
Generated Mon, 05 Dec 2011 17:19:53 GMT by sq56.wikimedia.org (squid/2.7.STABLE9)

pyfunc.. 12

如果您使用以下内容,则可以下载图像:

wget http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg

但是如果你做了以下事情:

from urllib import urlretrieve
urlretrieve('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg', 
            'Zindagi1976.jpg')

您可能无法下载图像.这可能是这种情况,因为维基百科可能有规则(robot.txt)来拒绝机器人或机器人(未知客户端).尝试模拟浏览器.

要做到这一点,你必须添加以下作为标题的一部分:

('User-agent', 
 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) 
 Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')

你可以这样做:

>>> from urllib import FancyURLopener
>>> class MyOpener(FancyURLopener):
...     version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
... 
>>> myopener = MyOpener()
>>> myopener.retrieve('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg', 'Zindagi1976.jpg')
('Zindagi1976.jpg', )

这将检索文件



1> pyfunc..:

如果您使用以下内容,则可以下载图像:

wget http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg

但是如果你做了以下事情:

from urllib import urlretrieve
urlretrieve('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg', 
            'Zindagi1976.jpg')

您可能无法下载图像.这可能是这种情况,因为维基百科可能有规则(robot.txt)来拒绝机器人或机器人(未知客户端).尝试模拟浏览器.

要做到这一点,你必须添加以下作为标题的一部分:

('User-agent', 
 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) 
 Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')

你可以这样做:

>>> from urllib import FancyURLopener
>>> class MyOpener(FancyURLopener):
...     version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
... 
>>> myopener = MyOpener()
>>> myopener.retrieve('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg', 'Zindagi1976.jpg')
('Zindagi1976.jpg', )

这将检索文件

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有