美文网首页
HTTP请求的python实现-Requests库

HTTP请求的python实现-Requests库

作者: 朱双伟_西潮坝上 | 来源:发表于2019-04-17 16:16 被阅读0次

    Requests实现是比较人性化的,也是最常用的方式。操作更加简单,更加人性化。

    Requests库是第三方模块,需要额外进行安装。可以取GitHub上下载源码,下载地址是:http://github.com/kennethreitz/requests/releases。将源码压缩包解压缩,然后进入解压缩后的文件夹,运行setup.py即可。验证安装是否成功的方法是在python中输入import requests,若不报错,即为安装成功。

    1.首先实现一个完整的请求与响应模型。

    GET请求

    import requests

    r=requests.get('http://www.baidu.com')

    print(r.content) #输出字节信息

    POST请求

    import requests

    postdata={'key':'value'}#(在某个登陆页面需要输入用户名,密码)

    r=requests.post('http://www.xxxx.com/login',data=postdata)

    print(r.content)

    HTTP中其他请求也可以用Requests实现

    r=requests.put('http://www.xxxx.com/put',data={'key':'value'})

    r=requests.delete('http://www.xxxx.com/delete')

    r=requests.get('http://www.xxxx.com/get')

    r=requests.head('http://www.xxxx.com/get')

    r=requests.options('http://www.xxxx.com/get')

    2.响应与编码

    直接获取网页编码并赋给r.encoding

    chardet检测字符串/文件编码模块,chardet.detect()返回字典

    import requests

    r=requests.get('http://www.baidu.com')

    r.encoding=chardet.detect(r.content)['encoding'] 

    print r.text #这样输出的文本不会有乱码

    3.请求头headers处理

    在get函数中添加headers参数即可。

    import requests

    user_agent='Mozilla/4.0 (compatible; MSIE5.5; Windows NT)'

    headers={'User-agent':user_agent}

    r=requests.get('http://www.baidu.com',headers=headers)

    print(r.content)

    4.响应码code和响应头headers处理

    获取响应码使用Requests中的status_code字段,获取响应头使用Requests中的headers字段.

    import requests

    r=requests.get('http://www.baidu.com')

    if r.status_code == requests.codes.ok:

        print r.status_code #响应码

        print r.headers #响应头

        print r.headers.get('content-type') # 推荐

        print r.header['content-type'] #不推荐

    当headers中没有响应字段时,第一种返回None;第二种会抛出异常。

    5.Cookie处理

    如果响应中包含Cookie的值,可以用如下方式获取Cookie字段的值

    import requests

    user_agent='Mozilla/4.0 (compatible; MSIE5.5; Windows NT)'

    headers={'User-agent':user_agent}

    cookies = dict(name='qiye', age='10')

    r=requests.get('http://www.baidu.com',headers=headers,cookies=cookies)

    print(r.text)

    还有一种更加高级,且能自动处理Cookie的方式,有时候我们并不关心Cookie的值是多少,只是希望每次访问的时候自动把Cookie的值带上,向浏览器一样。Requests提供了一个session的概念,在连续访问网页,处理登陆跳转时特别方便,不需要关注具体细节。

    import Requests

    loginUrl = 'http://www.xxxx.com/login'

    s=requests.Session()

    #首先访问登陆界面,作为游客,服务器会先分配一个cookie

    r=s.get(loginUrl, allow_redirects=True)

    datas = {'name':'qiye','passwd':'qiye'}

    #向登陆链接发送post请求,验证成功,游客权限转为会员权限

    r=s.post(loginUrl,data=datas, allow_redirects=True)

    print r.text

    这种使用Session函数处理Cookie的方法今后会很常用。

    6.重定向与历史信息

    处理重定向只是需要设置一下allow_redirects字段即可,设置为True, 即允许重定向;设置为False,则是禁止重定向。如果运行重定向可以通过r.history字段查看历史信息,即访问成功之前的所有请求跳转信息。

    7.超时处理

    超时选项时通过timeout来进行设置的

    requests.get('http://github.com',timeout=2)

    8. 代理设置

    import Requests

    proxies = { 

    "http": "http://0.10.1.10:3128"

    "http": "http://10.10.1.10:1080"

    }

    requests.get('http://example.org',proxies=proxies)


    请求得到URL文本后如何对网页进行解析,则是python爬虫开发中非常关键的一步。HTML中网页解析提取方式有多种,分别为Firebug工具,正则表达式和Beautiful soup。本文主要介绍Beautiful soup。欲知解析大法,且看下回分解。

    相关文章

      网友评论

          本文标题:HTTP请求的python实现-Requests库

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