zoukankan      html  css  js  c++  java
  • Python request 和response 初使用

    request的get方法
    r=request.get(url)构造一个向服务器请求资源的Request对象,

    返回一个包含服务器资源的Response对象。

    Request对象由Request库自动生成的。
    Response对象包含从服务器返回的所有相关资源
    同时包含我们向服务器请求获得页面的request信息
    request.get(url,params=None,**kwargs)
    url:拟获取页面的url链接
    params:url中的额外参数,字典或字节格式,可选
    **kwargs:12个控制访问的参数
    get方法源代码用request方法进行封装
    request库提供了七个常用方法,除了第一个request方法是基础方法外
    其他方法都是通过调用request方法来实现的
    也可以这样认为:request库只由一个方法就是request方法
    为了编写程序方便,提供了其他6个方法来调用request方法
    request库的2个重要对象
    r=requests.get(url)
    使用request对象,返回response对象
    response对象包含爬虫返回的全部内容
    网络上的资源,他有他的编码
    如果没有编码,我们将没办法用有效的解析方式使得人类可读这样的内容
    r.encoding的编码方式是从Http header中charset字段获得的
    如果Http header中有这样一个字段,说明我们访问的服务器对它资源的编码是有要求的
    而这样的编码会获得回来存在r.encoding中
    但不是所有的服务器对他的相关资源编码都是有这样的要求
    如果header中不存在charset字段,则认为编码为ISO-8859-1
    但是这样的编码并不能解析中文
    所以Request库提供一个备选编码叫apparent_encoding
    apparent_encoding做的事情是根据Http的内容部分(而不是头部分)
    分析内容中出现文本的可能的编码形式
    原则上来说,apparent_encoding比encoding更为准确
    因为encoding并没有分析内容,他只是从header的相关字段中提取编码数
    而apparent_encoding在分析内容且找到其中可能的编码

    运用实例:

    Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> import requests
    >>> r = requests.get("http://www.baidu.com")
    >>> print(r.status_code)
    #在这里,如果返回的是200表示访问成功。如果不是200则出现了错误
    200
    >>> type(r)
    <class 'requests.models.Response'>
    >>> r.headers
    {'Server': 'bfe/1.0.8.18', 'Date': 'Thu, 03 May 2018 23:52:26 GMT', 'Content-Type': 'text/html', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:32 GMT', 'Transfer-Encoding': 'chunked', 'Connection': 'Keep-Alive', 'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Pragma': 'no-cache', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Content-Encoding': 'gzip'}
    >>> r.text
    '<!DOCTYPE html>
    <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>çx99¾åº¦ä后面不管是啥了,反正出现了乱码'
    #由于出现乱码,查看一下编码
    >>> r.encoding
    'ISO-8859-1'
    >>> r.apparent_encoding
    'utf-8'
    #改一下r.encoding编码
    >>> r.encoding='utf-8'
    >>> r.text
    '<!DOCTYPE html>
    <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head>'乱码已修改好
    >>> 

  • 相关阅读:
    解疑网络监控卡壳 视觉体验400ms延时
    DDD实战11 在项目中使用JWT的token 进行授权验证
    在sql语句中 inner join ,left join,right join 和on 以及where
    在.net core自带DI中服务生命周期 Transient,Scoped,Singleton
    DDD实战10 在项目中使用JWT的token
    简单使用.net core 自带的DI
    在.net core中一个简单的加密算法
    DDD实战9 经销商领域上下文
    DDD实战8_2 利用Unity依赖注入,实现接口对应实现类的可配置
    DDD实战8_1 实现对领域中连接字符串的可配置
  • 原文地址:https://www.cnblogs.com/Andrea-null/p/8988901.html
Copyright © 2011-2022 走看看