Python3爬虫 – 下载反盗链图片的方式
原创文章,作者:StubbornHuang,如若转载,请注明出处:《Python3爬虫 – 下载反盗链图片的方式》https://www.stubbornhuang.com/535/
1 第一种方式:为Headers添加Referer字段
下载反盗链图片时,Headers除了必备的User-Agent字段之外,还需添加Referer字段,该字段为当前图片所在的Web页面链接。
1.2 在headers未加入Referer字段时
运行以下代码:
import requests
# 图片地址
url = 'https://www.stubbornhuang.com/wp-content/uploads/2019/12/201912260937073.png'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
reponse = requests.get(url,headers=headers)
print(reponse.status_code)
with open("1.jpg","wb")as f:
f.write(reponse.content)
reponse.close()
这是下载我个人站的图片,但是我在阿里OSS中配置了图片反盗链,所以如果我们以这种形式去下载图片,最后的响应代码一般都是403,这就是因为该资源进行了反盗链,那么自然图片也是无法下载成功的。
1.2 反盗链手段:在headers加入Referer字段,且该Referer字段对应的值为该资源的web页面链接时
运行以下代码:
import requests
# 图片地址
url = 'https://www.stubbornhuang.com/wp-content/uploads/2019/12/201912260937073.png'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0',
'Referer':'https://www.stubbornhuang.com/532/'
}
reponse = requests.get(url,headers=headers)
print(reponse.status_code)
with open("1.jpg","wb")as f:
f.write(reponse.content)
reponse.close()
结果发现,请求响应代码为200,说明我们请求成功,成功下载到了资源。
当前分类随机文章推荐
- 解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度
- Python3爬虫 - requests库的requests.exceptions所有异常详细说明
- Python BeautifulSoup的find()和findAll()
- Python3爬虫 - requests的请求响应状态码(requests.status_code)
- Pip - 常用命令(安装,卸载,升级第三方库)
- 简单粗暴:使用pycharm安装对应的Python版本第三方包
- Python3 - 正则表达式去除字符串中的特殊符号
- Python:UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 12305,以及中文乱码的解决方案
- opencv-python - 读取视频,不改变视频分辨率修改视频帧率
- Python3爬虫 - 下载反盗链图片的方式
全站随机文章推荐
- OpenCV - 创建新图像以及遍历图片像素值和设置像素值
- 我的开源项目 - 支持C++11特性的定时器TinyTimer
- 资源分享 - Polygon Mesh Processing英文高清PDF下载
- 资源下载 - OpenGL着色语言PDF中文高清版下载
- WPF - 代码动态更换按钮的背景图片
- WordPress - 纯代码在文章内容末尾添加当前文章同一分类下的随机推荐文章
- 资源分享 - PHP与MySQL程序设计(第4版) 中文 PDF下载
- C++11 - std::bind简要介绍以及可绑定函数的几种形式总结
- C++11/std::thread - 线程管理join/detach
- OpenCV - 新建一个图片,并在图片上画由一点到另一点的直线,采用反走样形式