一、什么是网络编程

  使用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. Win10+Linux(CentOS) 双系统安装教程--踩坑实录

    最近心血来潮想给自己的笔记本装一套linux系统作为开发环境, 说干就干,首先先收集一下现在linux主流版本, 貌似现在市场上应用服务器比较多的是redhat相关产品,而ubuntu的优势在于它庞大 ...

  2. oracle的sql 记录

    ----1.分组函数--select max(tfi.expected_scale) max1,min(tfi.expected_scale) min1,to_char(avg(tfi.expecte ...

  3. Codeforces Round #575 (Div. 3) D1+D2. RGB Substring (easy version) D2. RGB Substring (hard version) (思维,枚举,前缀和)

    D1. RGB Substring (easy version) time limit per test2 seconds memory limit per test256 megabytes inp ...

  4. ui自动化之selenium操作(二)定位元素-简单操作

    1. 将浏览器最大化 这里拿chrome举例,但是我在执行的时候一直报错,被坑了好久; 解决办法: 这是因为chromedriver是和chrome一一对应的,不兼容的版本就会报错: 所有chrome ...

  5. Web service基础

    Web service是Web应用程序 平台是XML+http XML是不同平台和不同编程语言之间的语言,用于编解码数据. http是因特网协议 XML是web service的基础 Web serv ...

  6. grpc 学习

    RPC概念:(参考:http://www.imooc.com/article/285514) RPC(远程过程调用)一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样 ...

  7. C#基础知识之理解Cookie和Session机制

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  8. Python之常用模块三(面向对象相关的三个模块)

    hashlib.configparser.logging模块 一.常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希 ...

  9. 《Head First 软件开发》阅读五

    结束开发循环:娟娟细流归大海 几乎完成了任务,而开发循环结束所要面对的问题是用户测试的安排.新的一轮重构和重新设计. 开发循环已经完成,但是还是有很多事情可以去做.系统测试必不可少,但是是由谁来做系统 ...

  10. Gym-100923L-Por Costel and the Semipalindromes(进制转换,数学)

    链接: https://vjudge.net/problem/Gym-100923L 题意: Por Costel the pig, our programmer in-training, has r ...