1、使用urllib模块(使用不方便,建议使用第二种)

  • get请求: res = urlopen(url)
from urllib.request import urlopen
url = 'http://www.nnzhp.cn'
print(urlopen(url))#返回http.client.HTTPResponse object at 0x00000235BA25A160
print(urlopen(url).read().decode())#返回get到的页面的源代码
# decode是将base类型转为encoding 指定的编码格式解码字符串,不指定则转为默认编码,如utf-8
  • post请求
from urllib.request import urlopen
from urllib.parse import urlencodeurl='http://127.0.0.1:8999/api/login'
data = {'username':'testuser1','passwd':'111111'}
s = urlencode(data)
res = urlopen(url,s.encode()) #post请求
print(res.read().decode())#最后print返回数据未请求返回数据
{"code": 2,"msg": "用户不存在"
}
注意:带参数的时候是一个post请求,若http://127.0.0.1:8999/api/login接口的方法限定了methods为get,则会报错urllib.error.HTTPError: HTTP Error 405: METHOD NOT ALLOWED
  • res.read().decode()  #read()返回的值是base类型,需要通过decode转成utf-8等;如果返回类型是json,不能使用json()方法将其转成字典

2、使用requests模块

  • 先安装requests模块:pip install requests
  • 然后导入该模块 import requests
  • import requests后运行脚本文件,报错如下openssl相关的信息,则重新安装pyOpenSSL即可。
    1 AttributeError: cffi library '_openssl' has no function, constant or global variable named 'Cryptography_HAS_NETBSD_D1_METH'
  • get请求res = requests.get(url,data=data,cookies=cookie,headers=header,verify=False,files=file)  
    • data可传可不传,data是字典格式。
    • 如果url是https的话,加上verify=False。如果url是http的话,可不加。
import requestsurl='http://127.0.0.1:8999/api/login'
data = {'username':'testuser1','passwd':'111111'}
r = requests.get(url,params=data) #发get请求
print(r)#返回<Response [200]>
print(r.json())#将返回的json串转为字典
print(r.text)#返回get到的页面的返回数据

输出结果:

<Response [200]>
{'code': 2, 'msg': '用户不存在'}
{"code": 2,"msg": "用户不存在"
}
  • post请求

    • res = requests.post(url,data=data,cookies=cookie,headers=header,verify=False,files=file)  

      • data是字典格式
    • res = requests.post(url,json=data,cookies=cookie,headers=header,verify=False,files=file) 
      • data是json格式
    • Cookie、header里面只能放String 类型的键值对。不能是json格式
    • file是二进制文件
    • 如果url是https的话,加上verify=False。如果url是http的话,可不加。
import  requests
## --------------------------------------------------------------------
## 发送post请求--带参数(字典格式)
## --------------------------------------------------------------------
url1 = 'http://127.0.0.1/api/user/login'
data = {'username':'testuser1','passwd':'111111'}
res = requests.post(url1,data=data)#data可以直接传字典
print('2.1=====',res)
print('2.2=====',res.json())#返回结果不需要decode,也可以直接通过json()转成字典
print('2.3=====',res.text)
发送post请求--带参数
import  requests
## --------------------------------------------------------------------
## 发送post请求--带参数(json格式)
## --------------------------------------------------------------------
url3= 'http://127.0.0.1/api/user/add_stu'
data = {"name":"request_name","grade":"3","sex":"男","age":28,"addr":"河南省"}
res = requests.post(url3,json=data)#注意,这里的data是字典格式!之所以json=data,是因为请求报文要求入参是json格式,requests模块会自己将data字典转成json格式再发送请求
print('3.1=====',res)
print('3.2=====',res.json())
print('3.3=====',res.text)
发送post请求--带cookie(仅字典格式)
import  requests
#获取cookie值
url= 'http://127.0.0.1/api/user/login'
data = {'username':'testuser1','passwd':'111111'}
res = requests.post(url,data=data)
result = res.json()
print('4.0=====',result)
sign = result.get('login_info').get('sign')
## --------------------------------------------------------------------
## 发送cookie
## --------------------------------------------------------------------
url4= 'http://127.0.0.1/api/user/gold_add'
data = {'stu_id':15,'gold':1000}
cookie ={'testuser1':sign}
res = requests.post(url4,data=data ,cookies=cookie)#data是字典
print('4.1=====',res)
print('4.2=====',res.json())
print('4.2=====',res.text)
发送post请求--带header(仅字典格式)

cookie如果有很多键值对的话,可以包装在header里发出,header={'Cookie':'a=v,b=v........'}

import  requests
## --------------------------------------------------------------------
## 发送header
## --------------------------------------------------------------------
url5 = 'http://127.0.0.1/api/user/all_stu'
header = {'Referer':'http://api.nnzhp.cn/'}
res = requests.get(url5,headers=header)#传header
print('5.1=====',res)
print('5.2=====',res.json())
print('5.3=====',res.text)
res = requests.get(url5)#不传header
print('5.4=====',res.json())
requests.get(url,headers={'cookie':'pt2gguin=o0511402865; RK=JQZpwBp1by; ''ptcz=6c30e26a9ed6be93d3de9e4c4aca3e55650cf99fcffa64729bd1d58a5fb209d9; ''pgv_pvi=779236352; pgv_pvid=6970909788; qb_qua=; qb_guid=818de686e29d412fa4ee9e99905ea166; ''Q-H5-GUID=818de686e29d412fa4ee9e99905ea166; NetType=; pgv_si=s4499960832; ''FTN5K=0138ca95; pgv_info=ssid=s4269564370; luin=o0511402865; uin=o0511402865; ''lskey=00010000efc2701412d3429029ac9366e4ba98f0e978e0ae4a9c684101a7b22df0695f534bc242c8d4ff386d; ''skey=@0sHtvhTsD; ptisp=cnc; p_uin=o0511402865; pt4_token=wGU2YAaM0uu7LbcNjuDcLN-TPrEy7AZw4gcL5TEcKxw_; ''p_skey=1zg7yvF5wr6l43mfr-BvNHxuVDtybKpR5RbCrgC8weQ_'})#cookie传入,直接拷贝进去requests.get(url,cookies={'pt2ggui':'o0511402865','RK':'JQZpwBp1by'})#写cookie的话,要一个个按照字典的方式写
发送post请求--带file(仅二进制格式)
r = requests.post(url,data={'session_id':'6ab8785039dcf50fb11c53acc1db7648'},files={'file_name':open('account.xls','rb')  })
import requests
## --------------------------------------------------------------------
## 上传文件
## --------------------------------------------------------------------
url7 = 'http://127.0.0.1/api/file/file_upload'
data = {'file':open('魔鬼中的天使.mp3','rb')}
res = requests.post(url7,files=data)#如果是https的话,要加上verfiy=False参数
print('3.1=====',res.json())
获取响应结果
  • res  #返回如<Response [200]>
  • res.status_code  #返回状态码,如200
    
    1 import requests
    2 ## --------------------------------------------------------------------
    3 ## 返回状态码
    4 ## --------------------------------------------------------------------
    5 url = 'http://www.nnzhp.cn'
    6 res = requests.get(url)#发送get请求
    7 print('1.1======',res.status_code)#获取状态码
    1 1.1====== 200
  • res.json()  #返回字典。不需要手动decode()转码。如果res结果是json格式,可以使用json()将json串转成字典格式。如果res结果不是json的话,不能使用json()

  • res.text #返回字符串,响应的源码。不能用于下载文件。

  • res.content  #返回二进制。主要用于流媒体文件、图片文件的下载。

下载mp3

import requests
## --------------------------------------------------------------------
## 返回二进制--流媒体
## --------------------------------------------------------------------
url6 = 'http://qiniuuwmp3.changba.com/1084511584.mp3'
res = requests.get(url6)
with open('魔鬼中的天使.mp3','wb') as fw:#把二进制文件下载下来,写入到'魔鬼中的天使.mp3'fw.write(res.content)#res.content返回结果是二进制的,如x03\xe3\xa3\xf2......
下载图片
import requests
## --------------------------------------------------------------------
## 返回二进制--图片
## --------------------------------------------------------------------
url7 = 'https://aliimg.changba.com/cache/photo/855e5493-f018-44db-8892-c8660649327b_640_640.jpg'
res = requests.get(url7,verify=False)#如果是https的话,要加上verfiy=False参数
print('3.3=====',res.content)#返回结果是二进制的
with open('photo.jpg','wb') as fw:#把二进制文件下载下来,写入到'photo.jpg'fw.write(res.content)

res.headers  #返回响应的所有headers

## --------------------------------------------------------------------
## 返回headers
## --------------------------------------------------------------------
url = 'http://www.nnzhp.cn'
res = requests.get(url)#发送get请求
print('1.1======',res.headers)#获取所有cookies
r
res.cookies  #返回响应的所有cookies
import requests
## --------------------------------------------------------------------
## 返回cookie
## --------------------------------------------------------------------
url = 'http://www.nnzhp.cn'
res = requests.get(url)#发送get请求
print('1.1======',res.cookies)#获取所有cookies

python发送网络请求相关推荐

  1. Python发送网络请求(requests)

    Python发送网络请求(requests) Python已经是广泛使用的脚本语言了,我们可以使用requests库进行网络请求. 在PyPI中搜索requests,就可以找到这个库 1. 安装 pi ...

  2. python 网络接口 开发_Python自动化学习笔记(八)——接口开发、发送网络请求、发送邮件、写日志...

    1.接口开发(flask模块) Python自动化学习笔记(七)接口开发部分的内容补充 1.1参数为json格式: flask.request.is_json #判断参数是否是json格式 flask ...

  3. Python自动化学习笔记(八)——接口开发、发送网络请求、发送邮件、写日志...

    1.接口开发(flask模块) Python自动化学习笔记(七)接口开发部分的内容补充 1.1参数为json格式: flask.request.is_json #判断参数是否是json格式 flask ...

  4. python爬虫 - python requests网络请求简洁之道

    转自:python爬虫 - python requests网络请求简洁之道 requests简介 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到 ...

  5. requests模块--python发送http请求

    requests模块--python发送http请求 方法一. ? 1

  6. vue如何发送网络请求,使用axios事半功倍!

    目录 一.axios使用 1.支持多种请求方式: 2.安装 3.简单使用实例 4.发送并发请求 5.全局配置 二.axios的实例 1.为什么要创建 axios的实例呢? 2.使用 三..axios模 ...

  7. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  8. Fetch发送网络请求

    1. 文档 https://github.github.io/fetch/ https://segmentfault.com/a/1190000003810652 2. 特点 fetch: 原生函数, ...

  9. axios发送网络请求

    网络模块封装 选择什么网络模块 传统的Ajax 缺点:配置和调用方式等非常混乱 jQuery-Ajax 缺点:在Vue整个开发中都是不需要使用jQuery的 axios axios 功能特点: 在浏览 ...

最新文章

  1. 继python(银行转账)简单Model修改版(二)
  2. 【编译原理】关于文法形式化定义的探索
  3. rest-framework:权限组件
  4. 区块链创业的成功范式,人工智能不得不学
  5. 天谕手游与奥特曼联手,玩家看到有多么激动?
  6. ARM汇编中lr(r14)寄存器的作用
  7. 文件的删除和文件信息的读取
  8. 前端学习(2162):知识回顾
  9. python程序开机自启动_Linux下Python脚本自启动和定时启动的详细步骤
  10. 只写c语言,求助C语言大佬 , 只会写到一个.c文件里 ,不会用.h头文件
  11. 谈谈计算机专业职业技能,计算机专业职业技能论文
  12. 达内java1707第一阶段_达内Java就业班学习路线图(附视频教程)
  13. 比特率与波特率的区别
  14. 良品铺子的2021:营收创新高后的“战术调整”
  15. 《战狼Ⅱ》豆瓣十二万影评浅析
  16. kdd99数据集svm分类_使用svm和不平衡的twitter数据集进行三级情感分类的任务
  17. c语言编程一张纸对折,【动手试试】把一张纸对折
  18. pytest测试框架学习笔记
  19. 软件开发的非功能性需求
  20. Java研发技术学习路线

热门文章

  1. PS动效插件imagemotion汉化版
  2. C语言中time_t详解
  3. C语言-浅谈文件IO
  4. java实现24点_求 JAVA 算24点的代码
  5. 磊科nw336 linux驱动程序,Ubuntu 10.04 安装磊科nw336驱动 rtl8188su rtl8192su
  6. QML+cmake 下取消打印 QML debugging is enabled.Only use this in a safe environment.
  7. true false 与TRUE FALSE 的区别
  8. Windows平台下图形化的Ping工具
  9. 知识蒸馏是什么?一份入门随笔
  10. 文字发光_AE模板漂亮柔美发光文字标题粒子动画 Soft Light Titles【资源分享1472】...