urllib 简单请求函数封装 -1

from urllib import request,parse
from urllib.error import HTTPError,URLError

# 对get和post 提交方式再一次的进行封装
def get(url,headers = None):
    return urlrequests(url,headers = headers)

def post(url,form = None,headers = None):
    return urlrequests(url,form,headers=headers)

# 封装函数
def urlrequests(url,form=None,headers=None):
    # 判断 headers 是否有传参,如果为空 则使用默认使用自定义的 user_agent
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
    if headers == None:
        headers = {
            'User-Agent':user_agent
        }
        # 定义空字节流 bytes
    html_bytes = b''
    try:
        # post 提交
        # 如果 form 有传递参数 则 判断为post提交类型
        if form:
            #post # 转换为 请求参数类型 转换为bytes类型
            form_str = parse.urlencode(form).encode('utf-8')
            req =request.Request(url,data=form_str,headers = headers)
        else:
            # get 包装请求
            req = request.Request(url,headers = headers)
            # 发起请求 返回为二进制html文本
        response = request.urlopen(req)

        html_bytes = response.read()
    except HTTPError as a:
        print(a)
    except URLError as a:
        print(a)
    return html_bytes

if __name__ == '__main__':
    url = 'http://www.baidu.com'
    html = urlrequests(url)
    print(html)



猜你喜欢

转载自blog.csdn.net/weixin_42961627/article/details/81639310