Python urllib封装网络请求方法

(一)Python的网络请求库汇总

Python有很多功能强大的网络请求库,汇总如下表所示:

网络请求库名称介绍
urllib(Python2)Python2的内置库
urllib2(Python2)Python2的内置库
urllib(Python3)Python3的内置库,该内置库是对Python2中urllib和urllib2整合后的库
urllib3虽然库名中包含urllib,但是却是一个第三方的网络请求库
requests第三方的网络请求库

(二)使用urllib封装网络请求方法

一般情况下可使用功能强大的第三方网络请求库,但有时也会仅允许是用Python3标准环境进行网络请求,在Python3标准环境下就必须使用内置库对基本方法进行封装使用。

1. get方法

import urllib
from urllib.request import Request

def request_get(domain: str, path: str, header: dict, paras: dict) -> Request:
    # request url
    if len(query_paras) != 0:
        encode_query_paras = urllib.parse.urlencode(paras)
        url = "?".join([domain + path, paras])
    else:
        url = domain + path

    return urllib.request.Request(url, headers=header, method='GET')

2. post方法

import urllib
from urllib.request import Request

request_post(domain: str, path: str, header: dict, body: dict, paras: dict = None) -> Request:
    # request url
    url = domain + path

    # request body
    if len(body) != 0:
        body = post_body_encode(header['Content-Type'], body)
    else:
        body = None

    # request query
    if (paras is not None) and (len(paras) != 0):
        encode_paras = urllib.parse.urlencode(paras)
        url = "?".join([url, encode_paras])

    return  urllib.request.Request(url, headers=header, data=body, method='POST')

3. put方法

import urllib
from urllib.request import Request

def request_put(request_url: str, header: dict, data: bytes) -> Request:
    return  urllib.request.Request(request_url, headers=header, data=data, method='PUT')

4. post请求体编码方法

improt urllib
import json

def post_body_encode(content_type: str, body: dict) 
    if content_type == "application/x-www-form-urlencoded":
        return bytes(urllib.parse.urlencode(request_body).encode('utf-8')) 
    elif content_type == "application/json" or content_type == "application/json;charset=UTF-8":
        return bytes(json.dumps(body), 'utf-8')
    else:
        return None
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rongmelt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值