我想使用python模块“urllib.request”从网址下载图像文件,该模块适用于某些网站(例如mangastream.com),但不适用于另一个(mangadoom.co)接收错误“HTTP错误403:禁止” . 后一种情况可能会出现什么问题以及如何解决?
我在OSX上使用python3.4 .
import urllib.request
# does not work
img_url = 'http://mangadoom.co/wp-content/manga/5170/886/005.png'
img_filename = 'my_img.png'
urllib.request.urlretrieve(img_url, img_filename)
在错误消息的末尾,它说:
...
HTTPError: HTTP Error 403: Forbidden
但是,它适用于其他网站
# work
img_url = 'http://img.mangastream.com/cdn/manga/51/3140/006.png'
img_filename = 'my_img.png'
urllib.request.urlretrieve(img_url, img_filename)
我已经尝试过以下帖子中的解决方案,但它们都不适用于mangadoom.co .
Downloading a picture via urllib and python
How do I copy a remote image in python?
这里的解决方案也不合适,因为我的情况是下载图像 . urllib2.HTTPError: HTTP Error 403: Forbidden
非python解决方案也是受欢迎的 . 您的建议将非常感谢 .
3 回答
你可以 Build 一个开场白 . 这是一个例子:
顺便说一句,以下代码是相同的:
(无开 jar 器)
(揭幕战)
但是,我们使用时无法添加 Headers :
所以在这种情况下,我们必须 Build 一个开场白 .
我尝试wget与终端中的URL,它的工作原理:
所以我的方法是使用下面的脚本,它也有效 .
该网站阻止了urllib使用的用户代理,因此您需要在请求中更改它 . 不幸的是我不认为
urlretrieve
直接支持这个 .我建议使用漂亮的
requests
库,代码变成(来自here):请注意,该网站似乎并未禁止
requests
user-agent . 但如果需要修改它很容易:也相关:changing user-agent in urllib