14.Python网络通信

news2024/11/26 15:36:32

本章讲解如何通过Python访问互联网上的资源,这也是网络爬虫技 术的基础。

1 基本的网络知识

程序员在进行网络编程前,需要掌握基本的网络知识,本节会介绍 这些内容。

1.1 TCP/IP

在网络通信中会用到一些相关协议,其中,TCP/IP是非常重要的协 议,由IP和TCP两个协议构成。IP(Internet Protocol)是一种低级的路 由协议,它将数据拆分在许多小的数据包中,并通过网络将它们发送到 某一特定地址,但无法保证所有包都抵达目的地,也不能保证包按顺序 抵达。

由于通过IP传输数据存在不安全性,所以还需要通过TCP(Transmi ssion Control Protocol,传输控制协议)进行网络通信。TCP是一种高层 次的协议,是面向连接的可靠数据传输协议,如果有些数据包没被收到 ,则会重发,对数据包的内容准确性进行检查并保证数据包按顺序抵达 。所以,TCP能够保证数据包安全地按照发送时的顺序送达目的地。

1.2 IP地址

为了实现网络中不同计算机之间的通信,每台计算机都必须有一个 与众不同的标识,这就是IP地址,TCP/IP使用IP地址来标识源地址和目 的地址。

最初,所有的IP地址都是由32位数字构成的,由4个8位的二进制数 组成,每8位之间用圆点隔开,例如192.168.1.1,这种类型的地址通过IP v4指定。现在有一种新的地址模式,叫作IPv6,IPv6使用128位数字表 示一个地址。尽管IPv6比IPv4有很多优势,但是由于习惯的问题,很多 设备还是采用IPv4。

另外,我们有时还会用到一个特殊的IP地址127.0.0.1,127.0.0.1叫 作回送地址,指本机。回送地址主要用于网络软件测试及本机的进程间 通信,只发送数据,只进行本机进程间通信,不进行任何网络传输。

1.3 端口

一个IP地址标识一台计算机,每一台计算机又有很多网络通信程序 在运行,提供网络服务或进行通信,这就需要不同的端口进行通信。如 果把IP地址比作电话号码,那么端口就是分机号码,在进行网络通信时 不仅要指定IP地址,还要指定端口号。

TCP/IP系统中的端口号是一个16位的数字,它的范围是 0~65535 。将小于1024的端口号保留给预定义的服务,例如HTTP是80,FTP是2 1,Telnet是23,Email是25,等等。除非要和那些服务进行通信,否则 不应该使用小于1024的端口。

1.4 HTTP/HTTPS

对互联网的访问大多基于HTTP/HTTPS,HTTP/HTTPS是TCP/IP的 一种协议。

1 HTTP

HTTP(Hypertext Transfer Protocol,超文本传输协议)属于应用层 协议,其简捷、快速的方式适用于分布式超文本信息传输。HTTP是无 连接协议,即在每一次请求时都建立连接,服务器在处理完客户端的请 求后,会先应答客户端,然后断开连接,不会一直占用网络资源。

HTTP/1.1共定义了8种请求方法:OPTIONS、HEAD、GET、POST 、PUT、DELETE、TRACE和CONNECT。GET和POST方法最常用。

1) GET方法:用于向指定的资源发出请求,被发送的信息“显式” 地跟在URL后面。它一般只用于读取数据,例如静态图片等。GET方法 有点像使用明信片给别人写信,将“信的内容”写在外面,接触到的人都 可以看到,因此是不安全的。

2) POST方法:用于向指定的资源提交数据,请求服务器进行处理 ,例如提交表单或者上传文件等。数据被包含在请求体中。POST方法 像是把“信的内容”装入信封中,接触到该信封的人都看不到信的内容, 因此是相对安全的。

2 HTTPS

HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议 )是超文本传输协议和SSL的组合,用于提供加密通信及对网络服务器 身份的鉴定。简单地说,HTTPS是加密的HTTP。

HTTPS与HTTP的区别是:HTTPS使用https://代替http://,HTTP S使用端口443,而HTTP使用端口80与TCP/IP通信。

2 搭建自己的Web服务器

搭建Web服务器的步骤如下。

1 安装JDK(Java开发工具包)

我们的Web服务器是Apache Tomcat,是支持Java Web技术的Web服 务器。Apache Tomcat的运行需要Java运行环境,而JDK提供了Java运行 环境,因此我们首先需要安装JDK。

我们可以从本章配套代码中找到JDK安装包jdk-8u211-windows-i586 .exe。具体安装步骤不再赘述。

2 配置Java运行环境

Apache Tomcat在运行时需要用到JAVA_HOME环境变量,因此需 要先设置JAVA_HOME环境变量。

首先,打开Windows系统环境变量设置对话框,打开该对话框有很 多方式,如果是Windows 10系统,则在桌面上用鼠标右键单击“此电脑” 图标,弹出Windows系统对话框,之后如下图所示操作。

3 安装Apache Tomcat服务器

我们可以从本章的配套代码中找到Apache Tomcat安装包apache-tom cat-9.0.13.zip,只需将apache-tomcat-9.0.13.zip解压即可安装Apache Tom cat服务器。

4 启动Apache Tomcat服务器

在Apache Tomcat解压目录的bin目录下找到startup.bat文件,双击sta rtup.bat即可启动Apache Tomcat。

5 测试Apache Tomcat服务器

打开浏览器,在地址栏中输入http://localhost:8080/NoteWebServi ce/,在打开的页面上介绍了当前Web服务器已经安装的Web应用(Note WebService)的具体使用方法。

打开浏览器,在地址栏中输入网址http://localhost:8080/NoteWeb Service/note.do,在打开的页面上可以查询所有数据。

3 urllib.request模块

我们要想在Python中访问互联网资源,则可以使用官方内置的urllib .request模块。

3.1 发送GET请求

如果要发送HTTP/HTTPS的GET请求,则可以使用urllib.request模块 的Request对象。

示例代码如下:

参考2节启动Web服务器,然后通过Python指令运行文件。

3.2 发送POST请求

如果要发送HTTP/HTTPS的POST请求,则其发送流程与发送GET 请求非常类似。

示例代码如下:

参考2节启动Web服务器,然后通过Python指令运行文件。

4 JSON数据

4.1 JSON文档的结构

构成JSON文档的两种结构为:JSON对象(object)和JSON数组(a rray)。

1 JSON对象

JSON对象类似于Python中的字典类型,示例如下:

4.2 JSON数据的解码

JSON数据的解码(decode)指将JSON数据转换为Python数据,当 从网络中接收或从磁盘中读取JSON数据时,需要将其解码为Python数 据。

在编码过程中,JSON数据被转换为Python数据。

2 JSON数组

JSON数组类似于Python中的列表类型,示例如下:

通过Python指令运行文件。

5 动动手——下载图片示例

参考2节启动Web服务器,然后通过Python指令运行文件。

在文件下载成功后,会在当前目录下看到download.png文件。

6 动动手——返回所有备忘录信息

参考代码如下:

参考2节启动Web服务器,然后通过Python指令运行文件。

7 练一练

1 请简述HTTP中POST和GET方法的不同。

2 请编写Python程序,访问你熟悉的Web网站。

3 判断对错:(请在括号内打√或×,√表示正确,×表示错误)。

1)127.0.0.1叫作回送地址,指本机,主要用于网络软件测试及本 机进程间通信,使用回送地址发送数据,不进行任何网络传输,只在本 机进程间通信。()

2)JSON对象是用大括号括起来的。()

3)JSON数组是用中括号括起来的。()

4)我们在自己编写网络通信程序时,应该使用大于1024的端口。 ()

5)当向服务器请求发送发大量数据时,应该使用GET()方法请 求。()

6)简单地说,HTTPS是加密版的HTTP。()

7)JSON对象解码后返回的是Python中的字典对象。()

8)JSON数组解码后返回的是Python中的列表对象。()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1563186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

备考ICA----Istio实验16---HTTP流量授权

备考ICA----Istio实验16—HTTP流量授权 1. 环境准备 kubectl apply -f istio/samples/bookinfo/platform/kube/bookinfo.yaml kubectl apply -f istio/samples/bookinfo/networking/bookinfo-gateway.yaml访问测试 curl -I http://192.168.126.220/productpage2. 开启mtls …

python对接百度云车牌识别

注册百度智能云,选择产品服务。 https://console.bce.baidu.com/ 每天赠送200次,做开发测试足够了。 在应用列表复制 AppID , API Key ,Secret Key 备用。 SDK下载地址 https://ai.baidu.com/sdk#ocr 下载SDK文件,解压,…

面试 五

一、设计模式 1、工厂模式 工程模式:在javascript中,工程模式的表现形式就是 一调用即可返回新对象的函数。 // 工厂模式 function person (name, age) {return { name, age} } const person1 person("tom", 18) const person2 person(&q…

Google DeepMind 大语言模型中的长形态事实性

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 论文标题:Long-form factuality in large language models 论文链接:https://arxiv.org/abs/2403.18802 论文的关键信息总结如下: 研究问题是什么?论文…

9proxy—数据采集工具全面测评

9Proxy数据采集工具Unlock the web with 9Proxy, the top residential proxy provider. Get unlimited bandwidth, affordable prices, and secure HTTPS and Socks5 configurations.https://9proxy.com/?utm_sourceblog&utm_mediumcsdn&utm_campaignyan 前言 在当今数…

【智能算法】蜣螂优化算法(DBO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年,Xue等人受到自然界中蜣螂生存行为启发,提出了蜣螂优化算法(Dung beetle optimizer, DBO)。 2.算法原理 2.1算法思想 DBO模拟了自然界蜣螂种…

泛域名站群,泛域名程序

泛域名站群是一种利用大量类似的泛域名来建立多个网站,并通过这些网站链接到主网站,以提升主网站的排名和流量的策略。泛域名站群通常包含大量的子域名,这些子域名指向不同的页面,但它们的内容大部分是重复或相似的,目…

机器学习KNN最邻近分类算法

文章目录 1、KNN算法简介2、KNN算法实现3、调用scikit-learn库中KNN算法4、使用scikit-learn库生成数据集5、自定义函数划分数据集6、使用scikit-learn库划分数据集7、使用scikit-learn库对鸢尾花数据集进行分类 1、KNN算法简介 KNN (K-Nearest Neighbor) 最邻近分类算法&#…

4款在线网页原型图设计软件推荐

与桌面端相比,在线网页原型设计软件的使用具有优势,因为在线网页原型设计软件在整个使用过程中不需要安装,在线网页原型设计软件在任何地方都没有限制。更重要的是,无论是现在使用的 Linux,在线网页原型设计软件在操作…

【THM】Burp Suite:Other Modules(其他模块)-初级渗透测试

介绍 除了广泛认可的Repeater和Intruder房间之外,Burp Suite 还包含几个鲜为人知的模块。这些将成为这个房间探索的重点。 重点将放在解码器、比较器、排序器和组织器工具上。它们促进了编码文本的操作,支持数据集的比较,允许分析捕获的令牌内的随机性,并帮助您存储和注释…

北京WordPress建站公司

北京wordpress建站,就找北京wordpress建站公司 http://wordpress.zhanyes.com/beijing

深入解析大数据体系中的ETL工作原理及常见组件

** 引言 关联阅读博客文章:探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章:深入理解HDFS工作原理:大数据存储和容错性机制解析 ** 在当今数字化时代,大数据处理已经成为了企业成功的重要组成部分。而在大数据处…

C#学习笔记 面试提要

冒泡 for (int m 0; m < arr.Length; m) { for (int n 0; n < arr.Length - 1 - m; n) { if (arr[n] > arr[n1]) { int temp arr[n]; arr[n] arr[n 1]; arr[n1] temp; } } } 选择 for (int m 0; m < arr.Length; m) { int index 0; for (int n 1; n < …

每日面经分享(pytest测试案例,接口断言,多并发断言)

pytest对用户登录接口进行自动化脚本设计 a. 创建一个名为"test_login.py"的测试文件&#xff0c;编写以下测试脚本 import pytest import requests# 测试用例1&#xff1a;验证登录成功的情况 # 第一个测试用例验证登录成功的情况&#xff0c;发送有效的用户名和密…

【实例分割】用自己的数据复现yolact网络-含python源码

yolact不算是很新的实例分割方法&#xff0c;但好在易上手&#xff0c;且像YOLO系列一样&#xff0c;在持续更新中&#xff0c; 所以作为示例分割的开篇&#xff0c;就以yolact作为第一篇开始学习吧! 目录 &#x1f438;&#x1f438;1.YOLACT是什么&#xff1f; &#x1f64…

MegaSeg Pro for Mac v6.3.1 注册激活版 音视频DJ混音工具

MegaSeg Pro for Mac是一款专业的DJ和广播自动化软件&#xff0c;旨在为音乐专业人士提供强大的音乐播放和演播功能。这款软件具有多种功能&#xff0c;包括强大的音乐库管理&#xff0c;支持导入和组织大量音乐文件&#xff0c;可以轻松管理你的音乐收藏。它支持广泛的音频格式…

篮球竞赛预约平台的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

SQLBolt,一个练习SQL的宝藏网站

知乎上有人问学SQL有什么好的网站&#xff0c;这可太多了。 我之前学习SQL买了本SQL学习指南&#xff0c;把语法从头到尾看了个遍&#xff0c;但仅仅是心里有数的程度&#xff0c;后来进公司大量的写代码跑数&#xff0c;才算真真摸透了SQL&#xff0c;知道怎么调优才能最大化…

工艺品wordpress外贸主题

工艺品wordpress外贸主题 简约大气的wordpress外贸主题&#xff0c;适合做工艺品进出品外贸的公司官网使用。 https://www.jianzhanpress.com/?p5377

【JavaWeb】Day25.Web入门——HTTP协议(一)

HTTP协议——概述 1.介绍 HTTP&#xff1a;Hyper Text Transfer Protocol(超文本传输协议)&#xff0c;规定了浏览器与服务器之间数据传输的规则。 http是互联网上应用最为广泛的一种网络协议http协议要求&#xff1a;浏览器在向服务器发送请求数据时&#xff0c;或是服务器在…