请教大家!python requests 库下载百度图片,下述第2种方法为什么添加请求头信息访问网页,而第1种方法没有请求头信息呢!

import requests
import urllib
url ='https://www.baidu.com/img/bd_ logol . png '#要下载的图片链接
response = requests . get ( url )#发送请求
获取响应
with open (' baidu _ logo . png ',' wb ') as f :#以二进制方式打开一个本地文件,用于保存下载的图片
f . write ( response . content )#将响应内容写入文件
print ('图片已下载完成!')


import requests
url = 'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=38785274,1357847304&fm=26&gp=0.jpg'
#简单定义浏览器ua信息
headers = {'User-Agent':'Mozilla/4.0'}
#读取图片需要使用content属性
html = requests.get(url=url,headers=headers).content
#以二进制的方式下载图片
with open('C:/Users/Administrator/Desktop/image/python_logo.jpg','wb') as f:
    f.write(html)

headers = {'User-Agent':'Mozilla/4.0'}
这个目的是为了伪装自己为'Mozilla/4.0浏览器

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/361376
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Python:Requests模块的异常值处理
  • 除此之外, 这篇博客: python测试url是否可访问,网站是否连通的方法中的 1. requests库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 讲解实战方法之前,先科普下基本的知识点

    该代码为requests而不是request(注意区分)
    导入的时候通过import requests

    通过requests库获取url
    获取得到的值赋值给response对象:res = requests.get(url)

    requests的Http请求类型(get、post、put、delete等)都可返回一个response对象

    url = https://blog.csdn.net/weixin_47872288
    res = requests.get(url)
    res = requests.post(url)
    res = requests.put(url)
    res = requests.delete(url)
    res = requests.head(url)
    res = requests.options(url)