能够在浏览器上看到图像,但urllib.urlretrieve()无法下载它。我该如何下载?

时间:2018-02-08 12:07:04

标签: python web-scraping urllib

图片路径 - > http://markinternational.info/data/out/366/221983609-black-hd-desktop-wallpaper.jpg

我正在使用的代码

import urllib
urllib.urlretrieve("https://markinternational.info/data/out/366/221983609-black-hd-desktop-wallpaper.jpg" , "photu.jpg")

它返回的内容(对于成功或不成功的尝试返回相同的内容)

('photu.jpg', <httplib.HTTPMessage instance at 0x7fe3cfb27d88>)

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

这可能会有所帮助。

import urllib
f = open('photu.jpg','wb')
f.write(urllib.urlopen('https://markinternational.info/data/out/366/221983609-black-hd-desktop-wallpaper.jpg').read())
f.close()

答案 1 :(得分:1)

您需要伪造用户代理以绕过Web服务器的此限制。

我使用了Python3和requests库,我设法得到了图片:

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
url = 'https://markinternational.info/data/out/366/221983609-black-hd-desktop-wallpaper.jpg'
res = requests.get(url, headers=headers)
with open('photo.jpg', 'wb') as W:
    W.write(res.content)

答案 2 :(得分:1)

由于您发送的原始http请求没有任何User-Agent标头,因此服务器不允许请求通过。您可以使用标头中定义的User-Agent来模拟它,它就像在浏览器上一样工作。

url = "https://markinternational.info/data/out/366/221983609-black-hd-desktop-wallpaper.jpg"

req = urllib.request.Request(
    url, 
    data=None, 
    headers={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
    }
)

with open('image.jpg', 'wb') as img_file:
    img_file.write(urllib.request.urlopen(req).read())