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中的列表对象。()

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

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

相关文章

代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

校准曲线图表示的是预测值和实际值的差距,作为预测模型的重要部分,目前很多函数能绘制校准曲线。 一般分为两种,一种是通过Hosmer-Lemeshow检验,把P值分为10等分,求出每等分的预测值和实际值的差距. 另外一种是calibra…

JAVA8 新特性StreamAPI使用(二)

一、使用StreamAPI,(基于数据模型——客户、订单和商品,实体关系图如下,客户可以有多个订单,是一对多的关系,而产品和订单的关系是多对多的)需求如下: 二、Stream API思维导图 三、需…

3款必知的AI写作软件,智能写文效率高

在当今信息爆炸的时代,写作已经成为人们生活和工作中不可或缺的一部分。然而,随着人们对高效率和高质量写作需求的不断增加,人工智能写作软件应运而生。这些AI写作软件凭借其强大的语言处理能力和智能算法,为写作者们提供了全新的…

基于java的智能停车场管理系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

STC8H8K64U 学习笔记 - PWM

STC8H8K64U 学习笔记 - PWM 环境说明引脚说明 PWM呼吸灯震动马达 乐谱 环境说明 该内容仅针对我自己学习的开发板做的笔记,在实际开发中需要针对目标电路板的原理图进行针对性研究。 芯片:STC8H8K64U烧录软件:stc-isp-v6.92G编码工具&#xf…

wireshark抓包之DNS协议

DNS协议 DNS协议的主要作用是将域名解析为对应的IP地址。当我们在浏览器中输入一个网址时,计算机需要通过DNS协议来查找该网址对应的IP地址,以便能够建立连接并访问目标资源。 DNS协议的工作流程大致如下: 用户的计算机或设备(充…

又到清明,祝你健康珍重!Wish you health and treasure!

随着清明节的到来,全国各地的人们都在怀念和哀悼逝去的亲友。People around China commemorated deceased relatives and friends as theQingming Festival begins. 清明节不仅是中国的二十四节气之一,也是中国人缅怀逝去亲人的日子。Qingming is not on…

数学矩阵(详解)

矩阵乘法 知阵乘法是《线性代数》中的基础内容,但在考察数学的算法题中也会出现。 本节我们学习基础的矩阵乘法规则。 每个矩阵会有一个行数和一个列数,只有当相乘的两个矩阵的左矩阵的列数等于右矩阵的行数 时,才能相乘,否则不允…

游戏APP如何提高广告变现收益的同时,保证用户留存率?

APP广告变现对接第三方聚合广告平台主要通过SDK文档对接,一些媒体APP不具备专业运营广告变现的对接能力和资源沉淀,导致APP被封控,设置列入黑名单,借助第三方聚合广告平台进行商业化变现是最佳选择。#APP广告变现# 接入第三方平台…

EasyDarwin 、ffmpeg 音视频推流拉流;OBS视频推理软件、obs-rtspserver服务器;python读取rtsp流

参考:https://blog.csdn.net/N71FS1/article/details/130019563 一、EasyDarwin ffmpeg ffmpeg 推送音视频流到rtsp流服务器 EasyDarwin 作为rtsp流服务器 (下载:https://www.easydarwin.org/p/easydarwin.html)OBS 直播音视频录…

分享:搭建企微知识库简单易学步骤

说起企微知识库,可能有些人还不太清楚,为什么现在很懂企业选择搭建企微知识库?其实,企微知识库就是一个装满了企业的各种知识、经验和资料的载体。目的是为了方便员工随时查找和学习、有助于知识的传承和共享、加强团队协作和沟通…

专题三_二分查找(2)

目录 35. 搜索插入位置 解析 题解 852. 山脉数组的峰顶索引 解析 题解 162. 寻找峰值 解析 题解 35. 搜索插入位置 35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int searchInsert(vector<int>& nums, int…

MS SQL Server STUFF 函数实战 统计记录行转为列显示

目录 范例运行环境 视图样本设计 数据统计要求 STUFF函数实现 小结 范例运行环境 操作系统&#xff1a; Windows Server 2019 DataCenter 数据库&#xff1a;Microsoft SQL Server 2016 视图样本设计 假设某一视图 [v_pj_rep1_lname_score] 可查询对某一被评价人的绩效…

重生奇迹mu召唤技能

1、召唤师与法师的共通技能&#xff1a;火球术、真空波、陨石、冰封。 2、摄魂咒&#xff1a;夺取敌人的体力来补充自己的体力。 3、链雷咒&#xff1a;雷系列的技能&#xff0c;给予敌人连锁3次的雷电攻击&#xff0c;如果目标附近没有其他目标&#xff0c;就会攻击第一个对…

手撕算法-有效的括号

描述 分析 使用栈&#xff0c;如果是左括号&#xff0c;入栈&#xff0c;如果是右括号&#xff0c;判断栈是否为空&#xff0c;不是空出栈并校验是否匹配&#xff0c;不匹配返回false。最后如果栈为空&#xff0c;返回true。 代码 class Solution {public boolean isValid(…

朵米3.5客服系统源码,附带系统搭建教程

朵米客服系统是一款全功能的客户服务解决方案&#xff0c;提供多渠道支持&#xff08;如在线聊天、邮件、电话等&#xff09;&#xff0c;帮助企业建立与客户的实时互动。该系统具有智能分流功能&#xff0c;可以快速将客户请求分配给适当的客服人员&#xff0c;提高工作效率。…

【网课必备】学浪视频下载到本地

学浪作为知识付费平台&#xff0c;拥有大量的课程&#xff0c;所以很多人在学浪上购买自己的课程&#xff0c;但是学浪官方没有提供下载选项&#xff0c;只可以在学浪客户端软件观看&#xff0c;并不是很方便 于是为了解决这一个需求&#xff0c;小白老师s开发了学浪视频下载到…

Three.js真实相机模拟

有没有想过如何在 3D Web 应用程序中模拟物理相机&#xff1f; 在这篇博文中&#xff0c;我将向你展示如何使用 Three.js和 OpenCV 来完成此操作。 我们将从模拟针孔相机模型开始&#xff0c;然后添加真实的镜头畸变。 具体来说&#xff0c;我们将仔细研究 OpenCV 的两个失真模…

C语言第三十八弹---编译和链接

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 编译和链接 1、翻译环境和运行环境 2、翻译环境 2.1、预处理&#xff08;预编译&#xff09; 2.2、编译 2.2.1、词法分析 2.2.2、语法分析 2.2.3、语义分…

共享WiFi项目加盟怎么做?碰到这些服务商要留意!

自2014年共享WiFi项目被微火研发出来让大众都可以参与其中&#xff0c;市场上不少合作伙伴都发现了该项目市场缺口大、推广难度低及落地性强等优势&#xff0c;想要加盟共享wifi项目。从目前的情况来看&#xff0c;不少代理商虽然对这个项目本身有一定的了解&#xff0c;但是靠…