美文网首页
爬虫03-浅谈Response对象

爬虫03-浅谈Response对象

作者: Yan雪杉 | 来源:发表于2019-03-15 16:21 被阅读0次

之前几天一直在讲请求,今天来讲讲请求之后,服务器返回的响应。
首先我们来看下下面这段代码,想来大家应该都不陌生。

import requests
response = requests.get('https://www.baidu.com')
print(response.text)
print(response.content)

这里的response其实是一个Response对象,text和content分别表示取这个对象的text属性和content属性。

其中text表示文本数据形式的网页源代码,content表示字节型数据的网页源代码。

那么Response对象就只有这两个属性吗?还有其他的很有用的属性或方法吗?

当然有,接下来我们先看下Response对象都有些什么内容。


image.png

以上就是Response对象所有属性,有的我们暂时不需要了解,先来看看哪些是能够为我们所用的。

其中content和text属性我们已经学过了,分别表示网页源码的字节型数据和文本数据。

第一个要了解的是apparent_encoding和encoding属性,其中encoding是从HTTP header中猜测的响应内容编码方式,apparent_encoding是根据响应内容分析出的编码方式。

我们应该重点关注apparent_encoding,这个属性能够很好地帮助我们确认网页源码的编码方式,避免获取到的内容乱码。所以在获取网页源码时,为避免乱码,我们可以这么做。

# 实现功能,避免获取到的网页源码是乱码
import requests

res = requests.get('https://www.baidu.com')
res.encoding = res.apparent_encoding
# 这样,我们就不需要去关心获取到的网页源码的编码格式具体是什么
print(res.text)
f = open('baidu.com', 'w', encoding=res.encoding)
f.write(res.text)
f.close()

第二个要了解的是cookies属性,该属性保存了用户的cookie值,我们有的时候可以通过获取到上一个请求的cookie,作为请求头的一个cookie参数传入到请求中。

第三个要了解的是headers属性,这个属性中记录了响应头中的相关内容,虽然不怎么会用到,但还是要理解这是什么。

第四个要了解的是request属性,这个属性记录了请求的相关信息,这其中有一个请求头需要了解一下,通过了解这个请求头,我们能够更加深入地理解我们在编写爬虫的时候,为什么要在请求头中添加User-Agent参数,如果不加这个参数,这个headers属性中的User-Agent值是什么呢,我们可以来看一下:


image.png

可以看到,如果请求时不添加User-Agent参数,User-Agent默认值为python-requests/2.18.4,这样就容易被网站识别出是一个爬虫,从而限制我们的爬取。

最后一个需要了解的是status_code属性,这个属性表示响应的状态码,当我们一次性爬取的url数量过多的时候,就需要用status_code来过滤掉请求失败的url,否则在后面的数据解析中容易报错,从而导致程序运行的终止。

所以当爬取的url数量过多的话,经常会这样处理:

import requests
url_list = ['https://www.baidu.com', 'https://www.zhihu.com', 'https://www.douban.com']

for url in url_list:
    res = requests.get(url)
    if res.status_code != 200:
        continue
    print(res.text)

相关文章

  • 爬虫03-浅谈Response对象

    之前几天一直在讲请求,今天来讲讲请求之后,服务器返回的响应。首先我们来看下下面这段代码,想来大家应该都不陌生。 这...

  • Python 爬虫学习

    [python爬虫-Response对象的属性] (https://www.cnblogs.com/hjw1/p/...

  • 1、scrapy的使用

    使用: (1):新建工程 (2):认识目录 (3):生成爬虫文件 (4):认识response对象 (5):运行,...

  • response入门

    response response对象表示对程序发出的http请求的响应。 response对象常用属性和方法 r...

  • Servlet学习3 -- Response对象和Servlet

    一.Response对象 Response的作用Response对象是用来设置HTTP响应消息的,包括了响应行,响...

  • Scrapy爬虫框架学习之Response对象

    一、什么是Response对象? response对象是用来描述一个HTTP响应的,一般是和request成对出现...

  • 请求

    Request: request对象和response对象的原理1. request和response对象是由服务...

  • JavaWeb——Request&Response&am

    Request&Response原理 Request对象和response对象的原理 request和respon...

  • 6.3KOA 数据响应 Response

    数据响应 Response 获取 Response 对象 API详细地址 Response 别名 ctx.body...

  • JavaWeb——request

    1. request 对象和 response 对象的原理 request 和response 对象是由服务器创建...

网友评论

      本文标题:爬虫03-浅谈Response对象

      本文链接:https://www.haomeiwen.com/subject/jxlrmqtx.html