Python中,使用urllib.urlretrieve()函数下载图片,能不能添加Headers?
data里面就可以加啊{\u0026#39;Refer\u0026#39;:""}一时大意,公交车上挤糊涂了,应该是headers里加头文件,但是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就好了,求讲解。
---------------------------------------题主所说的替代方法说说呗,我想听听。目前我也搞不定,用普通的urlretrieve下载下来的图片打不开(应该是被加密了),加一个header也没用。我能想到的笨办法就是用命令行带URL参数打开IE,然后挨个另存为。。。
■网友
可以用requests请求图片链接(此处可以添加headers),然后将返回的内容用open保存到本地。
推荐阅读
- 『先进』长江流域最先进洗舱站在宁投运 油可分离回收,水能循环使用
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 汽车|迈凯伦Artura不再使用迈凯伦祖传V8引擎了?
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- win7中本地连接跟无线网卡同时使用时是怎么样的模式
- 可不可能利用网盘的秒传功能使用伪造的MD5(或其他信息)值进行文件分享
- 零基础入门学习啥语言好
- 为啥很多企业给用户发邮件会使用noreply/no-reply@xx.xx的邮箱