美文网首页
爬虫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对象

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