zoukankan      html  css  js  c++  java
  • python3模块: requests

    Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

      发送GET请求

    import urllib.request
     
    f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
    result = f.read().decode('utf-8')
      
    

    发送携带请求头的GET请求

    import urllib.request
     
    req = urllib.request.Request('http://www.example.com/')
    req.add_header('Referer', 'http://www.python.org/')
    r = urllib.request.urlopen(req)
     
    result = f.read().decode('utf-8')
    

      更多内容点击查看官方文档

      Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

    1. 安装模块
    pip3 install requests
    
    1. 使用模块

      GET请求

    # 1、无参数实例
      
    import requests
      
    ret = requests.get('https://github.com/timeline.json')
      
    print(ret.url)
    print(ret.text)
      
      
      
    # 2、有参数实例
      
    import requests
      
    payload = {'key1': 'value1', 'key2': 'value2'}
    ret = requests.get("http://httpbin.org/get", params=payload)
      
    print(ret.url)
    print(ret.text)
    

      POST请求

    # 1、基本POST实例
      
    import requests
      
    payload = {'key1': 'value1', 'key2': 'value2'}
    ret = requests.post("http://httpbin.org/post", data=payload)
      
    print(ret.text)
      
      
    # 2、发送请求头和数据实例
      
    import requests
    import json
      
    url = 'https://api.github.com/some/endpoint'
    payload = {'some': 'data'}
    headers = {'content-type': 'application/json'}
      
    ret = requests.post(url, data=json.dumps(payload), headers=headers)
      
    print(ret.text)
    print(ret.cookies)
    

      其他请求

    requests.get(url, params=None, **kwargs)
    requests.post(url, data=None, json=None, **kwargs)
    requests.put(url, data=None, **kwargs)
    requests.head(url, **kwargs)
    requests.delete(url, **kwargs)
    requests.patch(url, data=None, **kwargs)
    requests.options(url, **kwargs)
      
    # 以上方法均是在此方法的基础上构建
    requests.request(method, url, **kwargs)
    

      更多requests模块相关文档点击查看

    1. Http请求和XML实例

    实例:检测QQ账号是否在线

    import urllib
    import requests
    from xml.etree import ElementTree as ET
     
    # 使用内置模块urllib发送HTTP请求,或者XML格式内容
    """
    f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
    result = f.read().decode('utf-8')
    """
     
     
    # 使用第三方模块requests发送HTTP请求,或者XML格式内容
    r = requests.get('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
    result = r.text
     
    # 解析XML格式内容
    node = ET.XML(result)
     
    # 获取内容
    if node.text == "Y":
        print("在线")
    else:
        print("离线")
    

    实例:查看火车停靠信息

    import urllib
    import requests
    from xml.etree import ElementTree as ET
     
    # 使用内置模块urllib发送HTTP请求,或者XML格式内容
    """
    f = urllib.request.urlopen('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
    result = f.read().decode('utf-8')
    """
     
    # 使用第三方模块requests发送HTTP请求,或者XML格式内容
    r = requests.get('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
    result = r.text
     
    # 解析XML格式内容
    root = ET.XML(result)
    for node in root.iter('TrainDetailInfo'):
        print(node.find('TrainStation').text,node.find('StartTime').text,node.tag,node.attrib)
    
  • 相关阅读:
    XRP共识算法
    瑞波币交易
    Bitcoin区块验证
    Bitcoin挖矿
    Bitcoin区块链攻击方式
    Bitcoin交易及验证
    C# 《编写高质量代码改善建议》整理&笔记 --(五)类型设计
    C# 《编写高质量代码改善建议》整理&笔记 --(五)成员设计
    C# 《编写高质量代码改善建议》整理&笔记 --(四)资源管理&序列化
    C# 《编写高质量代码改善建议》整理&笔记 --(三)泛型&委托&事件
  • 原文地址:https://www.cnblogs.com/guigujun/p/7614506.html
Copyright © 2011-2022 走看看