zoukankan      html  css  js  c++  java
  • 【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
    
  • 相关阅读:
    重载操作符- 友元函数- 非/模板类重载
    静态成员变量
    函数指针的使用
    高斯消元_HihoCoderOffer6_03
    多重背包(MultPack = ZeroOnePack + CompletePack)
    高斯消元
    textbox文本键盘全选
    BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
    Jquery获取input=text 的值
    sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
  • 原文地址:https://www.cnblogs.com/ghgxj/p/14219119.html
Copyright © 2011-2022 走看看