一、什么是网络编程

  使用Python进行网络编程,就是通过Python打开一个网站,或者请求一个http接口。可以通过标准模块urllib实现,也可以通过更简单易用的第三方模块requests实现。

二、urllib

 # 1、没有入参的get请求
import json
from urllib import request,parse
url = 'http://www.baidu.com'
req = request.urlopen(url) # 打开一个url,发get请求
content = req.read().decode() # 获取返回结果,返回结果是bytes类型需要加decode()
fw = open('baidu.html','w',encoding='utf-8') # 创建一个html文件
fw.write(content) # 将返回的内容写入html文件 # 2、有入参的get请求
url = 'http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑'
req = request.urlopen(url) # 打开一个url,发get请求
content = req.read().decode() # 获取返回结果,返回结果是bytes类型需要加decode()
res_dic = json.loads(content) # 将返回的json串转换为字典
if res_dic.get('error_code') == 0: # 根据返回的error_code判断测试是否通过
print('测试通过')
else:
print('测试不通过') # 3、post请求
url = 'http://api.nnzhp.cn/api/user/login'
data = {'username':'niuhanyang','passwd':'aA123456'} # 请求数据
data = parse.urlencode(data) # 自动拼好参数username=niuhanyang&passwd=aA123456
req = request.urlopen(url,data.encode()) # 发post请求,请求数据需要转成bytes类型
print(req.read().decode()) # 获取返回结果,返回结果是bytes类型需要加decode()

三、requests

 # 1、发get请求
import requests
url = 'http://api.nnzhp.cn/api/user/stu_info'
data = {'stu_name':'小黑'} # 请求数据
req = requests.get(url,params=data) # 发get请求
print(req.json()) # 字典
print(req.text) # string类型json串 # 2、发post请求
url = 'http://api.nnzhp.cn/api/user/login'
data = {'username':'niuhanyang','passwd':'aA123456'} # 请求数据
req = requests.post(url,data) # 发post请求
print(req.json()) # 字典
print(req.text) # string类型json串 # 3、入参是json类型的post请求
import random
phone = random.randint(10000000000,99999999999)
url = 'http://api.nnzhp.cn/api/user/add_stu'
data = {
"name":"小A",
"grade":"天蝎座",
"phone":phone,
"sex":"男",
"age":28,
"addr":"河南省济源市北海大道32号"
} # 请求数据
req = requests.post(url,json=data) # 发post请求
print(req.json()) # 字典
print(req.text) # string类型json串 # 4、post请求,添加cookie
url = 'http://api.nnzhp.cn/api/user/gold_add'
data = {'stu_id':467,'gold':''}
cookie = {'niuhanyang':'337ca4cc825302b3a8791ac7f9dc4bc6'}
req = requests.post(url,data,cookies=cookie) # 发post请求
print(req.json()) # 字典 # 5、post请求,添加header
url = 'http://api.nnzhp.cn/api/user/all_stu'
header = {'Referer':'http://api.nnzhp.cn/'}
req = requests.get(url,headers=header)
print(req.json()) # 字典 # 6、上传文件
url = 'http://api.nnzhp.cn/api/file/file_upload'
# data = {'file':open('baidu.html',encoding='utf-8')} # 文件中有中文的话要用encoding='utf-8'
data = {'file':open('QQ截图20180512164822.jpg','rb')} # 打开图片要用rb模式
req = requests.post(url,files=data)
print(req.json()) # 字典 # 7、下载图片/网页/文件
url = 'http://www.nnzhp.cn/wp-content/uploads/2018/01/soup.jpg' # 图片地址
# url = 'http://www.nnzhp.cn/archives/140' # 网页地址
# url ='http://up.mcyt.net/?down/46779.mp3' # mp3地址
req = requests.get(url) # 发送get请求
# print(req.content) #content就是返回的二进制文件内容
fw = open('s.jpg','wb') # 'wb'二进制写模式,下载图片
# fw = open('s.html','wb') # 下载网页
# fw = open('song.mp3','wb') # 下载音乐
fw.write(req.content)

Python学习之==>网络编程的更多相关文章

  1. python学习(20) 网络编程

    原文链接:http://www.limerence2017.com/2018/01/02/python20/ python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/ ...

  2. python学习之网络编程基础

    引入场景:客户与银行关系 银行职员负责给客户提供取钱服务,客户通过账户密码跟银行职员建立合作关系.此时银行职员就可以作为服务器,当用户A取完钱后他需要等待下一个用户的接入,用户的账号密码就是建立合作关 ...

  3. python学习(九) 网络编程学习--简易网站服务器

    python `网络编程`和其他语言都是一样的,服务器这块步骤为:`1. 创建套接字``2. 绑定地址``3. 监听该描述符的所有请求``4. 有新的请求到了调用accept处理请求` Python ...

  4. python学习总结---网络编程

    网络编程 相关概念 - OSI七层模型:它从低到高分别是:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. - TCP/IP: 在OSI七层模型基础上简化抽象出来的一套网络协议簇,现在得到 ...

  5. Python学习--19 网络编程

    TCP编程 Client 创建一个基于TCP连接的Socket: # coding: utf-8 import socket # 创建一个TCP连接: s = socket.socket(socket ...

  6. Python学习day36-并发编程(2)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  7. python高级之网络编程

    python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...

  8. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  9. 第六篇:python高级之网络编程

    python高级之网络编程   python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及 ...

随机推荐

  1. CSS3 transform 属性 旋转 div 元素

    div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* ...

  2. 第03课:GDB常用的调试命令概览

    先给出一个常用命令的列表,后面结合具体的例子详细介绍每个命令的用法. 命令名称 命令缩写 命令说明 run r 运行一个程序 continue   c 让暂停的程序继续运行 next   n 运行到下 ...

  3. Codeforces Round #606 Div. 2 比赛总结

    比赛情况 bq. A题 Wrong Answer on test 2 , E题sb题没切.bqbqbq. 比赛总结 bq. 那就直接上题解吧!^-^ A 数位dp,分类讨论,注意细节. Talk is ...

  4. ps制作雾的效果

    制作雾的效果 方法一: 新建图层,将前景色设置为白色,背景色为黑色(因为雾的颜色是根据前景色决定的,也可根据这个原理制作火焰效果) 选择滤镜->渲染->云彩(也可选择其他效果的云彩) (选 ...

  5. puppet运维自动化之用户管理

    系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户 ...

  6. 《Spring源码深度解析》二

    第二章:容器的基本实现 2.1 基本用法 首先定义一个Bean:(假设在bean包下) 然后定义配置文件: 测试类: 当然,这并非是企业级用法,此处只是用来分析学习其实现 2.2 功能分析 上述三图代 ...

  7. 2019春Python程序设计作业2(0326--0401)

    1-1 已知st="Hello World!",使用print(st[0:-1])语句可以输出字符串变量st中的所有内容. (2分) T         F 1-2 Python程 ...

  8. Android使用init.rc触发脚本实现隐藏内置应用

    [实现逻辑] 通过在property_service.c中设置标志位,在设置中实现接口改变标志位, 使用init.rc中声明的服务来侦听标志位的变化,显式启动声明的服务,执行对应的脚本,把应用后缀从a ...

  9. THU-CCF WC2019两开花记

    今年年初,清华大学举办的THUWC2019即将正式开启,我将继续扮演蒟蒻OIER,努力创造一个菜鸡的形象,THU-CCF WC两爆炸,笑掉各位大牙,大家多多关注. Day0 广州好热啊╰(‵□′)╯! ...

  10. 利用 clipboardData 在网页中实现截屏粘贴的功能

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...