一、网络编程

简而言之,就是通过代码打开一个url,获得返回结果并做处理。通常所说的python爬虫,就属于网络编程

二、urllib模块进行网络编程

这个方法很繁琐,不建议使用。了解

示例1:

获取一个网页内容,写入文件

  1. from urllib import request,parse
  2. # url = 'http://www.baidu.com'
  3. # req = request.urlopen(url) #打开一个url,发get请求
  4. # content = req.read().decode() #获取返回结果,是二进制,需要先decode()
  5. # fw = open('baidu.html','w',encoding='utf-8')
  6. # fw.write(content)

示例2:

获取接口返回结果,做判断

  1. from urllib import request,parse#导入urllib模块的request和parse
  2. import json
  3. # url='http://127.0.0.1/api/user/stu_info?stu_name=aaa'eq = request.urlopen(url) #打开一个url,发get请求
  4. # content = req.read().decode() #获取返回结果,二进制,要先解二进制decode()为字符串
  5. # res_dic = json.loads(content) #返回的结果转成字典
  6. # if res_dic.get('error_code') == 0:
  7. # print('测试通过')
  8. # else:
  9. # print('测试失败',res_dic)

示例3:

有参数传入时,用parse拼接参数,请求url,获取结果

  1. from urllib import request,parse
  2. url = 'http://api.nnzhp.cn/api/user/login'
  3. data = {
  4. 'username':'admin',
  5. 'passwd':'aA123456'
  6. } #请求数据,写成字典格式
  7. data = parse.urlencode(data) #urlencode,自动给你拼好参数
  8. # xx=xx&xx=11
  9. req = request.urlopen(url,data.encode()) #发post请求
  10. print(req.read().decode())

以上看到urllib的用法先对比较麻烦,一步一步操作,必须先打开url,在传入参数,对返回的结果还要在进行处理。

requesets模块已经很好地将这几步封装。用起来更方便

三、requests

这个模块属于第三方模块,需要安装导入。pip install requests

示例1:

发送get请求url

  1. 1、发get请求
  2. url = 'http://127.0.0.1/api/user/stu_info'
  3. data = {'stu_name':'aaa'} #请求数据,用字典
  4. req = requests.get(url,params=data) #发get请求,直接写入参数url,和传参data即可自动访问网址,并返回数据。注意:get请求的传参必须用格式 params=参数
    #req返回的结果,是一个requests.models.Response对象
  5. print(req.json()) #可以把返回数据转换成字典
  6. print(req.text) #把返回数据转换成string,json串

示例2:

发送post请求

  1. url = 'http://127.0.0.1/api/user/login'
  2. data = {'username':'aaa','passwd':''} #请求数据,字典封装
  3. req = requests.post(url,data) #发送post请求,可直接传入参数data,不用写params
  4. print(req.json())#将结果转换成字典

示例3:

入参就是json格式

  1. url='http://127.0.0.1/api/user/add_stu'
  2. data = {
  3. "name":"小1",
  4. "grade":"天蝎座",
  5. "phone":13640000000,
  6. "sex":"男",
  7. "age":28,
  8. "addr":"发斯蒂芬斯蒂芬"
  9. }#参数,json
  10. req = requests.post(url,json=data)#入参是json,在传入参数时要指定 json=参数
  11. print(req.json())

示例4:

带有cookie的post请求

  1. url = 'http://127.0.0.1/api/user/gold_add'
  2. data = {'stu_id':468,'gold':10000}
  3. djl = {'aaa':'337ca4cc825302b3a8791ac7f9dc4bc6'}
  4. req = requests.post(url,data,cookies=djl)#入参带有cookie,在传入参数时,指定 cookies=参数
  5. print(req.json())

示例5:

带有header的get请求

  1. url = 'http://127.0.0.1/api/user/all_stu'
  2. header = {
  3. 'Referer':'http://127.0.0.1/'
  4. }
  5. req = requests.get(url,headers=header)#指定 headers=参数
  6. print(req.json())

示例6:

需要上传文件的请求

  1. url= 'http://127.0.0.1/api/file/file_upload'
  2. data = {
  3. 'file':open(r'C:\Users\bjniuhanyang\Desktop\图\6bd9026dt935575932465&690.jpg','rb')
  4. }#参数,如果上传的是个其他文件,则后面的rb可不写。因为上传的图片会以二进制形式保存,用rb表示读二进制模式。当然如果下载一个文件,则用wb
  5. req= requests.post(url,files=data)#指定 files=参数
  6. print(req.json())

示例7:

下载文件

  1. url = 'http://up.mcyt.net/?down/46779.mp3'#要下载文件的url
  2. req = requests.get(url)
  3. fw = open('aaa.mp3','wb')#mp3格式也是用二进制保存,所以用wb写二进制模式,将对应文件的内容读取到
  4. fw.write(req.content)#将读取到的内容写到一个文件中。这个文件内容就是下载的文件内容。

python基础:网络编程的更多相关文章

  1. python 基础网络编程2

    python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...

  2. python 基础网络编程1

    python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...

  3. python基础网络编程--转

    python之网络编程 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的 ...

  4. python基础-网络编程part01

    软件开发架构 C/S(Client / Server) 架构 概念:是一种软件系统体系结构.Client是客户端,Server是服务端.客户端需要安装专用的客户端软件. 比如:微信.QQ.王者荣耀等应 ...

  5. python基础-网络编程part02

    TCP协议 TCP是传输控制协议,建立双向通道. 三次握手,建立连接 客户端向服务端发送建立连接的请求 服务端接收请求返回确认信息给客户端,并向客户端发送建立连接的请求 客户端接收请求返回确认信息给服 ...

  6. Python基础-网络编程request使用

    import requests#get请求 url = "http://127.0.0.1:8000/login" data={"username":" ...

  7. python之网络编程

    本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用 ...

  8. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

  9. python基础-函数式编程

    python基础-函数式编程  高阶函数:map , reduce ,filter,sorted 匿名函数:  lambda  1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...

  10. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

随机推荐

  1. C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4106 访问. 使用队列实现栈的下列操作: push(x) -- ...

  2. Java爬取先知论坛文章

    Java爬取先知论坛文章 0x00 前言 上篇文章写了部分爬虫代码,这里给出一个完整的爬取先知论坛文章代码. 0x01 代码实现 pom.xml加入依赖: <dependencies> & ...

  3. AdblockPlus自定义屏蔽广告

    AdblockPlus自定义屏蔽广告我推荐使用两种方法: 1. 使用CSS选择器 2. 使用样式选择器 屏蔽广告中,重要的一个问题就是识别广告. 我们要自己编写屏蔽就得将广告选出来,告诉Adblock ...

  4. 复习 Array,重学 JavaScript

    1 数组与对象 在 JavaScript 中,一个对象的键只能有两种类型:string 和 symbol.下文只考虑键为字符串的情况. 1.1 创建对象 在创建对象时,若对象的键为数字,或者由 字母+ ...

  5. Java 10更新汇总,新的编译器通吃主流编程语言

    早些时候Oracle发布了Java 10,这是Oracle更改发布策略之后的第一版Java,Oracle现已决定每六个月发布一个新的Java版本,周期缩短了,但是并不是说我们要学的更多了,而是说缩短开 ...

  6. 企业微信人员日程推送接口(python版)

    企业在使用企业微信中,有时想批量推送员工日程信息.这里写了个接口工具分享给大家,供交流学习. 主入口程序: # -*- coding: utf-8 -*-import time as time imp ...

  7. java基础-03:注释

    1.注释的意义: (1) 为了更好的阅读自己编写的代码,方便日后代码维护,建议添加注释. (2) 有利于团队协作. (3) 代码即文档.程序源代码是程序文档的重要组成部分. 2.注释分类 (1) 单行 ...

  8. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  9. linux,运维,部署 相关

    基础 linux基础命令 linux基础 部署 docker

  10. Spring MVC 的运行流程

    1.用户发送请求到DispatcherServlet 2.DispatcherServlet调用处理器映射器(HanderMapping)找到处理器 3.处理器映射器(HanderMapping)返回 ...