Python中,使用urllib.urlretrieve()函数下载图片,能不能添加Headers?

data里面就可以加啊{\u0026#39;Refer\u0026#39;:""}一时大意,公交车上挤糊涂了,应该是headers里加头文件,但是urlretrieve没有headers参数Python中,使用urllib.urlretrieve()函数下载图片,能不能添加Headers?

之前有研究过训练批量下载和aria2批量下载,有需要的话,明天放出代码
■网友
中午刚查到的:# -------------- 直接下载,会被 403:Forbidden. You can build an opener.opener=urllib.request.build_opener()opener.addheaders=urllib.request.install_opener(opener)urllib.request.urlretrieve(url, Path)——————————————其实,直接用现成的 requests 模块,比上面这个强多了,也要加头模块。
■网友
“urllib2 can accept a Request object to set the headers for a URL request,urllib accepts only a URL. That means, you cannot masquerade your User Agent string etc.urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这意味着,你不可以伪装你的User Agent字符串等。”-----------------------------------------------------------------------------------------------------------给出一段requests库的代码(两种方法,PIL的会自动压缩一下):# coding=u8import urllibimport requestsfrom PIL import Imagefrom StringIO import StringIOheaders={ \u0026#39;Referer\u0026#39;:\u0026#39;http://manhua.dmzj.com/\u0026#39;}def saveImg1(imgurl,imgpath): response = requests.get(imgurl,headers=headers) with open(imgpath, \u0026#39;wb\u0026#39;) as f: f.write(response.content) f.flush()def saveImg2(imgurl,imgpath): response = requests.get(imgurl,headers=headers) img = Image.open(StringIO(response.content)) img.save(imgpath) img.close()def main(): imgurl = \u0026#39;http://images.dmzj.com/y/%E4%B8%80%E6%8B%B3%E8%B6%85%E4%BA%BA/yj/P012.jpg\u0026#39; imgpath = \u0026#39;./test.jpg\u0026#39; saveImg1(imgurl,imgpath) saveImg2(imgurl,imgpath)main()
■网友
今天我在用request.urlretrieve(img_url,filePath)时遇到Forbidden。
我先加了User-Agent,还是Forbidden。开审查元素,到Network界面刷新,发现图片加载时有Referer的header,加上,遂解决。
opener=request.build_opener()opener.addheaders=request.install_opener(opener)request.urlretrieve(img_url,filePath)url为网页地址
img_url为图片地址
【Python中,使用urllib.urlretrieve()函数下载图片,能不能添加Headers?】 filePath为图片保存的本地文件名

■网友
用Request搞定了防盗链问题,但有的图片用Request会出http.client.RemoteDisconnect异常,用回urlretrieve就好了,求讲解。Python中,使用urllib.urlretrieve()函数下载图片,能不能添加Headers?

---------------------------------------题主所说的替代方法说说呗,我想听听。目前我也搞不定,用普通的urlretrieve下载下来的图片打不开(应该是被加密了),加一个header也没用。我能想到的笨办法就是用命令行带URL参数打开IE,然后挨个另存为。。。
■网友
可以用requests请求图片链接(此处可以添加headers),然后将返回的内容用open保存到本地。


    推荐阅读