python之网络编程(urllib、requests)

本文深入探讨了Python中用于网络编程的urllib和requests库,包括它们的基本用法、发送HTTP请求、处理响应数据以及各自的特点。通过实例解析,展示了如何使用这两个库进行网页抓取和数据交互,帮助读者更好地理解和应用Python的网络编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、上面是使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出来使用的话,还得用json,发get请求和post请求,也不通,使用比较麻烦,还有一个比较方便的模块,比urllib模块方便很多,就是requests模块,它使用比较方便,需要安装,pip install requests即可,下面是requests模块的实例
        import requests        
        pay_url = 'http://szz.nnzhp.cn/pay'
        balance_url = 'http://szz.nnzhp.cn/get_balance'
        balance_data = {'user_id':1}
        pay_data ={"user_id":1,"price":"999"}
get请求: balance_res = requests.get(balance_url,balance_data).text
        #发送get请求,并获取返回结果,text获取的结果是一个字符串
        print(balance_res)
        balance_res = requests.get(balance_url,balance_data).json()
        #发送get请求,并获取返回结果,json()方法获取的结果直接是一个字典
        print(balance_res)
post请求:pay_res = requests.post(pay_url,pay_data).json()#调用post方法
        print(pay_res)

#====入参是json串的====
        url = 'http://api.nnzhp.cn/getmoney'
        data = {"userid":1}
        res = requests.post(url,json=data).json()#指定入参json
        print(res)
#======添加cookie=====
        url = 'http://api.nnzhp.cn/setmoney2'
        data = {'userid':1,"money":9999}
        cookie = {'token':"token12345"}
        res = requests.post(url,data,cookies=cookie).json()#使用cookies参数指定cookie
        print(res)
#=====添加权限验证=====
        url = 'http://api.nnzhp.cn/setmoney'
        data = {'userid':1,"money":91999}
        res = requests.post(url,data,auth=('admin','123456')).json()
        #使用auth参数指定权限验证的账号密码,auth传的是一个元组
        print(res)
#======发送文件=====
        url = 'http://api.nnzhp.cn/uploadfile'
        res = requests.post(url,files={'file':open('api11.py',‘rb’)}).json()
        #指定files参数,传文件,是一个文件对象
        print(res)
#=====发送header======
        url = 'http://api.nnzhp.cn/getuser2'
        data = {'userid':1}
        header = {'Content-Type':"application/json"}
        res = requests.post(url,headers=header).json()
        #指定headers参数,添加headers
        print(res)   
        
---------------------------------------------------------------------------------------------------


二、python操作网络,也就是打开一个网站,或者请求一个http接口,使用urllib模块。

urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块。
        import json
        from urllib import request
        from urllib import parse
get请求: 
        pay_url = 'http://szz.nnzhp.cn/pay'
        balance_url = 'http://szz.nnzhp.cn/get_balance'
        balance_data = {'user_id':1}
        new_balance_data = parse.urlencode(balance_data)#把请求参数变成xx=11这样的
        balance_req = request.urlopen(balance_url+'?'+new_balance_data)#发送get请求
        print(balance_req.read().decode())
        #获取接口返回的结果,返回的结果是bytes类型的,需要使用decode方法解码,变成一个字符串
post请求:
        pay_data ={"user_id":1,"price":"999"}
        new_pay_data = parse.urlencode(pay_data)#把请求参数变成xx=11这样的
        pay_req = request.urlopen(pay_url,new_pay_data.encode())#发送post请求,传入参数的话
        #参数必须是bytes类型,所以需要先encode一下,变成bytes类型
        print(pay_req.read().decode())#获取接口返回的结果,返回的结果是bytes类型的
        #需要使用decode方法解码,变成一个字符串
        res = json.loads(pay_req.read().decode())
        #因为返回的是一个json传,想把json串转成字典的话,久使用json模块转成一个字典
        print(res)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值