14.Python网络通信

本章讲解如何通过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中的列表对象。()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【刷题】 二分查找入门

送给大家一句话: 总有一天,你会站在最亮的地方,活成自己曾经渴望的模样—— 苑子文 & 苑子豪《我们都一样 年轻又彷徨》 二分查找入门 1 前言2 Leetcode 704. 二分查找2.1 题目描述2.2 算法思路 3 Leetcode 34. 在排序数组中查找元素的第一个和最后…

3.28号arm

can总线相关理论 1. 概念 控制器局域网(Controller Area Network,CAN),其特点是可拓展性好,可承受大量数据的高速通信,高度稳定可靠,因此常应用于汽车电子领域、工业自动化、医疗设备等高要求…

蓝桥杯算法题-正则问题

问题描述 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是 6。 输入格式 一个由 x()| 组成的正则表达式。…

广告业务知识-业务

最近做了些广告业务,梳理下,分广告术语、业务架构、数据架构三篇。下面是业务篇: 1.广告业务链路 先用一张图介绍下广告业务链路,可以理解成类似股票交易链路,其中ADX(交易平台)联系着DSP&…

Mybatis(3) web项目

web项目 1、准备2、分析3、 MyBatis对象作用域以及事务问题4、问题 实现一个转账系统 1、准备 ①准备一个web模块 在这里使用了maven archetype,选择web 之后会生成 一个web模块,但是不同的版本可能不同,在这里我就没有java和resources目录&…

缺陷检测项目 | 使用小数据集训练实现锅炉水冷壁管表面视觉缺陷检测

项目应用场景 面向锅炉水冷璧管表面视觉缺陷检测场景,项目支持训练,使用小数据集就能够实现很好的缺陷检测效果。 项目效果: 项目细节 > 具体参见项目 README.md (1) 安装依赖,包括 gcForest、AutoKeras,然后安装其…

JUC并发编程—— 对volatile的理解及DCL的解决方法

volatile的原理 volatile 的底层实现原理是内存屏障,Memory Barrier(Memory Fence) 加入 volatile 关键字后,写指令(被 volatile 修饰的变量在对此变量修改时)会加入写屏障,读指令&#xff08…

超图打开不同格式的dem文件

dem,数字高程模型; dem文件的后缀是什么? 有*.dem格式的,也有Raster,ASCII和Tiff类型的。Raster类型的是一个raster文件夹里面有很多不同格式的文件共同组成了DEM文件的内容。ASCII类型的是个txt文件。Tiff类型的也是一个文件夹…

[leetcode] 637. 二叉树的层平均值

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000,11.00000] 解释:第 0 层的平均值…

uniapp打包

1.小程序 需要对应上appId才可以上传还要成为该小程序的开发者开可以点击上传 2.APP打包 点击发行选择云打包,会弹出下方的窗口 如果公司没有给证书信息,就去香蕉云编去申请默认的,把证书文件下载出来设置路径

文献学习-24-用于少发罕见病诊断的动态特征拼接

Dynamic feature splicing for few-shot rare disease diagnosis Authors: Yuanyuan Chen, Xiaoqing Guo , Yongsheng Pan , Yong Xia , Yixuan Yuan Source: Medical Image Analysis 90 (2023) 102959 Keywords: 少样本学习 罕见病诊断 transformer 特征拼接 通道相似度 Ab…

k8s练习-创建一个Deployment

创建Deployment 创建一个nginx deployment [rootk8s-master home]# cat nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:selector:matchLabels:app: nginx # 配置pod的labelsreplicas: 2 # 声明2个副本template:metada…

开发组合:PHP+MySQL 同城社区小程序源码 同城便民信息发布系统源码 源码开源可二开含搭建教程

同城便民信息发布系统源码在提升信息发布效率、促进商家宣传、增强用户互动、实现信息聚合与分类管理、个性化定制与扩展以及数据统计与分析等方面发挥着重要作用。 今天小编给大家分享一个同城社区小程序源码、同城便民信息发布系统源码,开发组合PHPMySQL&#xf…

每天学点儿Python(3) -- for循环

for循环结构格式如下 for 循环变量 in 遍历对象:语句块 举例一、 for i in "Hello"print(i) 执行结果如下 举例二、 #打印100-999之间的水仙花数 #注意:Python中 / 除法,运输后为浮点数, // 为取除法后的整数,而不是C/C中的注释…

C++之调用Python

1、配置头文件 Python安装目录下的include目录加入头文件目录。Visual Studio2022中操作路径是:属性–> C/C -> 常规-> 附加包含目录 C:\Users \AppData\Local\Programs\Python\Python39\include 2、配置lib库目录 要将Python39.lib加入编译链接。Visua…

【考研数学】汤家凤基础+武忠祥强化,如何高效衔接?看这一篇!无标题】

目标分在100的话,建议在备考初期就把分数定在120! 因为如果一开始就没有按高分备考,可能最后只能考到七八十,备考就尽力比自己的目标分在多高20分去准备。 本人属于基础很差相当于是零基础的考研党,经过一年备考成功…

SAP 修改消息号处理简介

在项目经常会遇到更改SAP消息号的地方,从警告的消息W变化报错的消息E。 通常通过TCODE:SE91来查询和创建消息号 关于消息号的几个后天表 T100:包含所有的message T100C:你定义的message通常将出现在此表 T100s:Configurable system messages顾名思义就是你能设置的消息. M…

北京WordPress建站公司

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

代码随想录 Day31 贪心算法 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

目录 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和 理论基础 1. 什么是贪心: 就是通过局部最优搜索全局最优 2. 贪心的两个极端:要么就是很简单的常识,要么就是很难理解的。 3. 贪心算法没有套路可言就是找局部最优&#xf…

SD-WAN组网面临的安全挑战?如何提供有效的安全措施

SD-WAN(软件定义广域网)技术的广泛应用,企业面临着越来越多的网络安全挑战。尽管SD-WAN带来了灵活性和效率的提升,但其开放性和基于云的特性也带来了一系列安全威胁。本文将探讨SD-WAN组网面临的安全挑战,并提供一些有…