提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Get方法
  • 二、urllib方法
  • 三、可能遇到的问题
    • 1、urllib.error.HTTPError: HTTP Error 403: Forbidden
  • 总结


前言

python 网页下载url链接图片or文件

一、Get方法

import requests

def download_img(img_url, api_token):
    print (img_url)
    header = {"Authorization": "Bearer " + api_token} # 设置http header,视情况加需要的条目,这里的token是用来鉴权的一种方式
    r = requests.get(img_url, headers=header, stream=True)
    print(r.status_code) # 返回状态码
    if r.status_code == 200:
        open('C:\\Users\\cloudoxou\\Desktop\\img.png', 'wb').write(r.content) # 将内容写入图片
        print("done")
    del r

if __name__ == '__main__':
    # 下载要的图片
    img_url = "http://www.baidu/some_img_url"
    api_token = "fklasjfljasdlkfjlasjflasjfljhasdljflsdjflkjsadljfljsda"
    download_img(img_url, api_token)

二、urllib方法

import urllib.request

def download_img(img_url, api_token):
    header = {"Authorization": "Bearer " + api_token} # 设置http header
    request = urllib.request.Request(img_url, headers=header)
    try:
        response = urllib.request.urlopen(request)
        img_name = "img.png"
        filename = "C:\\Users\\cloudoxou\\Desktop\\"+ img_name
        if (response.getcode() == 200):
            with open(filename, "wb") as f:
                f.write(response.read()) # 将内容写入图片
            return filename
    except:
        return "failed"

if __name__ == '__main__':
    # 下载要的图片
    img_url = "http://www.baidu/some_img_url"
    api_token = "fklasjfljasdlkfjlasjflasjfljhasdljflsdjflkjsadljfljsda"
    download_img(img_url, api_token)

三、可能遇到的问题

1、urllib.error.HTTPError: HTTP Error 403: Forbidden

需要添加特殊的header,模仿浏览器,可用F12查看。
例如:

主要是由于该网站禁止爬虫导致的,可以在请求加上头信息,伪装成浏览器访问User-Agent,具体的信息可以通过火狐的FireBug插件查询
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}

总结

个人记录不会的操作,向百度学习。。。。

更多推荐

python下载url图片或文件