zoukankan      html  css  js  c++  java
  • python__网络编程:urllib、requests模块

    一、urllib模块:python自带的模块

     1、urllib模块的get请求:

    from urllib import urlopen   #打开url
    from urllib.parse import urlencode
    #get请求:
    url='https://api.nnzhp.cn/api/user/stu_info'
    d={'stu_name':'小白'}
    req=urlopen(url+'?'+urlencode(d))   #get请求的参数要转成二进制
    print(req.read())   #返回的结果是bytes类型
    print(req.read().decode())   #返回的结果转成字符串

      2、urllib模块的post请求:

    url='http://api.nnzhp.cn/api/user/login'
    d={'username':'niuhan','passwd':'123456'}
    req2=urlopen(url,urlencode(d2).encode())    #post的参数转成二进制
    print(req2.read().decode())   #encode():转成二进制,decode()转成字符串

    urllib的进制转换比较麻烦,所以一般不用,常用requests来请求接口

    二、requests模块:

    1.get请求:

    url='http://api.nnzhp.cn/api/user/stu_info'
    url_mp3='http://aliuwmp3.changba.com/userdata/userwork/1128447787.mp3'
    url_pic='http://pic37.nipic.com/20140113/8800276_184927469000_2.png'
    d={'stu_name':'矿泉水'}
    r=request.get(url,d)
    r=requests.get(url,d)
    r_mp3=requests.get(url_mp3)
    r_pic=requests.get(url_pic)
    print('r.json',r.json())        #返回的是字典
    print('r.text',r.text)          #返回的是字符串,写文件或写数据库
    print('r.content',r.content)    #返回的是bypes   用于下载电影、图片

    #图片、音乐下载
    fw=open('yinyue.mp3','wb') #wb模式写的是bytes类型
    fw.write(r_mp3.content)
    fw=open('pic.jpg','wb')
    fw.write(r_pic.content)
     

    2.post请求:

    #基本的post请求
    url='http://api.nnzhp.cn/api/user/login/'
    d2={'username':'niuh','passwd':'123456'}
    r=requests.post(url,d2)   #传url和参数
    print(r.text)
    #当请求中需要有header时:
    url='https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list'
    d={'bkn': '1416018'}
    header={'cookie':'pgv_pvi=6085920768; RK=KD5wYAlob9; ptcz=5cc2a8f5a3bcd0506cc21ba664866b6eb78c6c6f94aa14db64bb62a27ab48746; pgv_pvid=4660937616; o_cookie=945968766; pac_uid=1_945968766; tvfe_boss_uuid=e34b6f14217dffb3; uin=o0945968766; ptisp=cnc; _qpsvr_localtk=0.17181781260384565; pgv_si=s5656426496; skey=@QzCllqyRK; p_uin=o0945968766; pt4_token=Arq7c4vrg*momK5TxkcVXOUZGiMwR16xvqcot9botbI_; p_skey=tMt63t2JH2QYoFlUKOFazsDPQIVlsG-bcukPHJKc6GU_; traceid=bf3e4d7f3c; pgv_info=ssid=s7769900608; ts_last=qun.qq.com/member.html; ts_uid=1696475632'}
    r=requests.post(url,d,headers=header)
    #header中可以写user-agent、cookies等信息
    print(r.json())
    #当请求中需要上传文件
    url='http://api.nnzhp.cn/api/file/file_upload'
    r=requests.post(url,files={'file':open('test','rb')})  #上传文件时,打开文件的rb模式
    print(r.text):

    3.session():登录完会自己管理cookie ,后边调用的接口,不用再传cookie 

    session=requests.session()
    url='http://api.nnzhp.cn/api/user/stu_info'
    url2='http://api.nnzhp.cn/api/user/login/'
    d={'stu_name':'矿泉水'}
    d2={'username':'niuha','passwd':'123456'}
    r1=session.get(url,params=d) #get方式,传参要用params=XXX
    r2=session.post(url2,data=d2)  #post方式,传参要用data=XXXX
    print(r1.json())
    print(r2.json())
    
    #session:
    #1.先登录,然后获取cookie、
    #2.使用cookie ,直接调用接口
    #例如:
    url4='http://api.nnzhp.cn/api/user/login/'
    d2={'username':'niuh','passwd':'123456'}
    url5='http://api.nnzhp.cn/api/pay'
    r3=session.post(url4,d2)  
    print(r3.json())
    print(r3.cookies)     #从返回结果中获取cookies
    session.post(url5)    #使用session,先调用了登录接口后,cookie会自动保存,后边再调用的接口,不需要再填写接口
  • 相关阅读:
    Sharepoint2013:日期控件报错
    Sharepoint2013:在页面上显示错误信息
    BeforeProperties/AfterProperties in Event Receivers
    一个ORM的实现(附源代码)
    DBHelper (支持事务与数据库变更)
    TypeError: <flask_script.commands.Command object at 0x00000201F36629E8>: option values must be strings
    Flask启动时报错:ValueError: urls must start with a leading slash
    {TypeError}__init__() takes from 1 to 2 positional arguments but 3 were given
    pycharm2019激活方法(有效期到2100年1月1日)
    Warning | 3719 | 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
  • 原文地址:https://www.cnblogs.com/hancece/p/11121985.html
Copyright © 2011-2022 走看看