【python】根据pixiv网站的图片url下载图片到本地

写在前面

pixiv是著名的插画网站。如果我们通过爬虫技术得到了pixiv网站图片的url,那么如何根据url下载图片到本地。

安装模块

pip install requests

测试样例

打开以下页面

https://www.pixiv.net/artworks/77926406

在这里插入图片描述

复制图片地址

https://i.pximg.net/img-original/img/2019/11/22/00/00/13/77926406_p0.jpg

在这里插入图片描述

下载图片

import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
headers = {'Referer': 'https://www.pixiv.net/'}
url = 'https://i.pximg.net/img-original/img/2019/11/22/00/00/13/77926406_p0.jpg'
res = requests.get(url, headers=headers, verify=False)
with open('test.jpg', 'wb') as f:
    f.write(res.content)

注意事项

请求头添加Referer

headers = {'Referer': 'https://www.pixiv.net/'}

关闭SSL证书验证

verify = False

温馨提示

Referer

pixiv设置了图片防盗链,所以需要添加Referer

Referer的作用就是告诉你要下载的那个图片页面,我是从主页面来的,你可以放心的把数据给我。

举个栗子:

  1. 直接访问测试样例的图片地址,会报403错误
    在这里插入图片描述
  2. 使用ModHeader这款插件,修改请求头:设置Refererhttps://www.pixiv.net/
    在这里插入图片描述
  3. 添加Referer后就能正常显示图片了在这里插入图片描述

verify=False

pixiv用的是私有证书,如果设置verify=True,下载会报错:

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='i.pximg.net', port=443): Max retries exceeded with url: /img-original/img/2019/11/22/00/00/13/77926406_p0.jpg 
(Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x0000027A06DCC3D0>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

请求图片地址的时候设置了verify=False,所以会弹出警告:

InsecureRequestWarning: 
Unverified HTTPS request is being made to host 'i.pximg.net'. 
Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

为了不让程序运行时弹出警告,我们需要添加以下两行代码:

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

引用参考

https://blog.csdn.net/python_neophyte/article/details/82562330
https://requests.readthedocs.io/zh_CN/latest/user/advanced.html#ssl
https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值