学习python 第十三天

python
网络通信协议及数据传输格式

TCP/IP模型
实现网络通信的基础是网络通信协议,这些协议通常是由互联网工程任务组 制定的。TCP/IP是一个四层模型,也就是说,该模型将我们使用的网络从逻辑上分解为四个层次,自底向上依次是:网络接口层、网络层、传输层和应用层

IP通常被翻译为网际协议,服务于网络层,主要实现了寻址和路由的功能。接入网络的每一台主机都需要有自己的IP地址,IP地址就是主机在计算机网络上的身份标识。cmd 中输入 ifconfig/all 找到首选
计算机网络上有大量的被我们称为“路由器”的网络中继设备,它们会存储转发我们发送到网络上的数据分组,让从源头发出的数据最终能够找到传送到目的地通路,这项功能就是所谓的路由。

TCP全称传输控制协议,它是基于IP提供的寻址和路由服务而建立起来的负责实现端到端可靠传输的协议,之所以将TCP称为可靠的传输协议是因为TCP向调用者承诺了三件事情:

数据不传丢不传错(利用握手、校验和重传机制实现)。HTTP协议中TCP的三次握手,四次挥手
流量控制(数据发送者和接收者之间的传输速度)。
拥塞控制

网络应用模式
C/S模式和B/S模式。这里的C指的是Client(客户端);而B指的是Browser(浏览器);通过C或B都可以实现对server(服务器)的访问。

HTTP(超文本传输协议)
HTTP是超文本传输协议(Hyper-Text Transfer Proctol)的简称,通过HTTP我们可以获取网络上的资源,开发中经常会用到的网络API(网络数据接口)就是基于HTTP来实现数据传输的。

JSON格式
JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,该语言以易于让人阅读的文字(纯文本)为基础,用来传输由属性值或者序列性的值组成的数据对象。
Python内置的json模块也提供了这方面的功能。由于JSON是纯文本,它和XML一样都适用于异构系统之间的数据交换,而相较于XML,JSON更容易提取数据。

XML的例子:

<?xml version="1.0" encoding="UTF-8"?>
<message>
	<from>买了佛冷</from>
	<to>买了佛冷</to>
	<content>why?</content>
</message>

JSON的例子:

{
    "from": "买了佛冷",
    "to": "买了佛冷",
    "content": "why?"
}

requests库
requests是一个基于HTTP协议来使用网络的第三库,使用requests库可以非常方便的使用HTTP,下面我们还是通过requests来实现一个访问网络数据接口并从中获取美女图片下载链接然后下载美女图片到本地的例子程序,程序中使用了天行数据提供的网络API

先通过pip安装requests及其依赖库。

pip install requests

下载安装requests。
代码中import requests 引入requests包

from time import time
from threading import Thread

import requests


# 继承Thread类创建自定义的线程类
class DownloadHanlder(Thread):

    def __init__(self, url):
        super().__init__()
        self.url = url

    def run(self):
        filename = self.url[self.url.rfind('/') + 1:]  #取/后面的字符串地址
        resp = requests.get(self.url)
        with open('目录' + filename, 'wb') as f:
            f.write(resp.content)
#rfind(a,b,c) 返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1。a-- 查找的字符串  b-- 开始查找的位置,默认为 0  c-- 结束查找位置,默认为字符串的长度。

def main():
    # 通过requests模块的get函数获取网络资源
    # 下面的代码中使用了天行数据接口提供的网络API
    # 要使用该数据接口需要在天行数据的网站上注册
    # 然后用自己的Key替换掉下面代码的中APIKey即可
    resp = requests.get(
        'http://api.tianapi.com/meinv/?key=APIKey&num=10')
    # 将服务器返回的JSON格式的数据解析为字典
    data_model = resp.json()
    for mm_dict in data_model['newslist']:
        url = mm_dict['picUrl']
        # 通过多线程的方式实现图片下载
        DownloadHanlder(url).start()


if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值