python网络爬虫网页前端编程基础、Socket库、使用Socket进行TCP编程、认识HTTP协议、熟悉Cookie等。_python的socket库

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

公共Socket函数:socket库中的公共函数即可在服务器端使用也可在客户端使用,为通用函数。

语法格式描述
socket.settimeout(timeout)设置套接字操作的超时时间,timeout是一个浮点数,单位是秒,值为None时表示永远不会超时。超时时间应在刚创建套接字时设置,因为它们可能用于连接的操作,如s.connect()
socket.gettimeout()返回当前超时值,单位是秒,如果没有设置超时则返回None
socket.fileno()返回套接字的文件描述
socket.makefile()创建一个与该套接字相关的文件

使用Socket进行TCP编程

TCP连接由客户端发起,服务器对连接进行响应。 建立一个服务器,服务器进程需要绑定一个端口并监听来自其他客户端的连接。 若有客户端发起连接请求,服务器就与该客户端建立Socket连接,随后的通信就通过此Socket连接进行。 服务器依赖服务器地址,服务器端口,客户端地址,客户端端口这4项来唯一确定一个Socket连接。

1. 服务器端TCP连接

建立服务器端的TCP连接,具体步骤如下。

在Python中创建一个基于IPv4和TCP协议的Socket。

绑定监听的地址和端口,地址使用本机地址“127.0.0.1”或“local host”,使用大于1024的端口。

调用listen方法开始监听端口,传入的参数指定等待连接的最大数量,设定为5。

创建一个tcp函数,该函数在连接建立后,服务器端首先发出一条表示连接成功的消息,然后等待客户端数据,再加上欢迎信息发送给客户端。若客户端发送exit字符串,则直接关闭连接。

通过一个循环接受来自客户端的连接,使用accept函数等待并返回一个客户端的连接,每个连接都分配一个新线程来处理。

2. 客户端TCP连接

在服务器端TCP连接建立后,建立客户端TCP连接进行测试,具体步骤如下。

与服务器端的协议保持一致,也建立一个基于IPv4和TCP协议的Socket。

与服务器端建立连接,连接的地址与端口需与服务器端保持一致。

使用recv函数接受服务器提示信息,之后再使用send函数发送数据至服务器,可看到服务器返回的结果。

TCP建立的连接可靠,通信双方以流的形式互相传送数据。相对TCP协议,UDP则是面向无连接的协议。

使用UDP协议时,无需建立连接的过程,仅需知道对方的IP地址及端口号,便可直接发送数据包,但无法保证能顺利传达到。

虽然用UDP传输数据不可靠,但其传输速度比TCP快,对于不要求可靠到达的数据,就可以使用UDP协议。

UDP传输通常应用在通讯实时性要求更高于可靠性场景,例如网络游戏。

使用Socket进行UDP编程

1. 服务器端UDP连接

UDP连接与TCP连接类似,也分为服务器端和客户端,不同的是UDP连接无需调用listen方法,直接接受来自任何客户端的数据。

建立UDP连接,服务器端同样需要绑定地址与端口。

使用recvfrom方法返回数据及客户端的地址与端口。

当服务器收到数据后,直接调用sendto把数据用UDP发给客户端。

2. 客户端UDP连接

客户端使用UDP连接时同样需要先创建socket。

之后无需使用connect方法,直接用sendto方法发送数据至服务器建立UDP连接,服务器端同样需要绑定地址与端口。

UDP连接与TCP连接可同时使用同一端口互不冲突,两者使用的端口是独立绑定的。

认识HTTP协议

HTTP请求方式与过程

爬虫在爬取数据时将会作为客户端模拟整个HTTP通信过程,该过程也需要通过HTTP协议实现。HTTP请求过程如下。

由HTTP客户端向服务器发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。

HTTP服务器从该端口监听客户端的请求。

一旦收到请求,服务器会向客户端返回一个状态,比如“HTTP/1.1 200 OK”,以及返回的响应内容,如请求的文件、错误消息、或其它信息。

1. 请求方法

在HTTP/1.1协议中共定义了8种方法(也叫“动作”)来以不同方式操作指定的资源,常用方法有GET、HEAD、POST等。

请求方法方法描述
GET请求指定的页面信息,并返回实体主体。GET可能会被网络爬虫等随意访问,因此GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中
HEAD与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回具体的内容,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中该资源的相关信息(元信息或称元数据)
POST向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据会被包含在请求中,这个请求可能会创建新的资源或修改现有资源,或二者皆有
PUT从客户端上传指定资源的最新内容,即更新服务器端的指定资源。
2. 请求(request)与响应(response)

HTTP协议采用了请求/响应模型。

客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。

服务器以一个状态行作为响应,响应的内容包括协议的版本、响应状态、服务器信息、响应头部和响应数据。

客户端与服务器间的请求与响应的具体步骤如下。

**连接Web服务器:**由一个HTTP客户端发起连接,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

**发送HTTP请求:**客户端经TCP套接字向Web服务器发送一个文本的请求报文。

**服务器接受请求并返回HTTP响应:**Web服务器解析请求,定位该次的请求资源。之后将资源复本写至TCP套接字,由客户端进行读取。

**释放连接TCP连接:**若连接的connection模式为close,则由服务器主动关闭TCP连接,客户端将被动关闭连接,释放TCP连接;若connection模式为keepalive,则该连接会保持一段时间。

**客户端解析HTML内容:**客户端首先会对状态行进行解析,之后解析每一个响应头,最后读取响应数据。

常见HTTP状态码

1. HTTP状态码种类

HTTP状态码是用来表示网页服务器响应状态的3位数字代码,按首位数字分为5类状态码。

状态码类型状态码意义
1XX表示请求已被接受,需接后续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
2XX表示请求已成功被服务器接收、理解并接受
3XX表示需要客户端采取进一步的操作才能完成请求。通常用来重定向,重定向目标需在本次响应中指明
4XX表示客户端可能发生了错误,妨碍了服务器的处理。
5XX表示服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器以当前的软硬件资源无法完成对请求的处理。

HTTP状态码详解点这里

HTTP状态码共有67种状态码,常见的状态码如下。

常见状态码状态码含义
200 OK请求成功,请求所希望的响应头或数据体将随此响应返回。
400 Bad Request由于客户端的语法错误、无效的请求或欺骗性路由请求,服务器不会处理该请求
403 Forbidden服务器已经理解该请求,但是拒绝执行,将在返回的实体内描述拒绝的原因,也可以不描述仅返回404响应
404 Not Found请求失败,请求所希望得到的资源未被在服务器上发现,但允许用户的后续请求
500 Internal Server Error通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理,不会给出具体错误信息
503 Service Unavailable由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复

HTTP头部信息(HTTP header fields)是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分。头部信息定义了一个超文本传输协议事务中的操作参数。在爬虫中需要使用头部信息向服务器发送模拟信息,通过发送模拟的头部信息将自己伪装成一般的客户端。

1. HTTP头部类型

HTTP头部类型按用途可分为:通用头,请求头,响应头,实体头。

**通用头:**既适用于客户端的请求头,也适用于服务端的响应头。与HTTP消息体内最终传输的数据是无关的,只适用于要发送的消息。

**请求头:**提供更为精确的描述信息,其对象为所请求的资源或请求本身。新版HTTP增加的请求头不能在更低版本的HTTP中使用,但服务器和客户端若都能对相关头进行处理,则可以在请求中使用。

**响应头:**为响应消息提供了更多信息。例如,关于资源位置的描述Location字段,以及关于服务器本身的描述使用Server字段等。与请求头类似,新版增加的响应头也不能在更低版本的HTTP版本中使用。

**实体头:**提供了关于消息体的描述。如消息体的长度Content-Length,消息体的MIME类型Content-Type。新版的实体头可以在更低版本的HTTP版本中使用。

字段名说明示例
Accept可接受的响应内容类型(Content-Types)Accept: text/plain
Accept-Charset可接受的字符集Accept-Charset:utf-8
Accept-Encoding可接受的响应内容的编码方式Accept-Encoding:gzip,deflate
Accept-Language可接受的响应内容语言列表Accept-Language:en-US
Cookie由之前服务器通过Set-Cookie设置的一个HTTP协议CookieCookie:$Version=1;Skin=new;
Referer设置前一个页面的地址,并且前一个页面中的连接指向当前请求,意思就是如果当前请求是在A页面中发送的,那么referer就是A页面的url地址Referer:http://zh.wikipedia.org/wiki/Main_Page
User-Agent用户代理的字符串值User-Agent:Mozilla/5.0(X11;Linuxx86_64;rv:12.0)Gecko/20100101Firefox/21.0

熟悉Cookie

HTTP是一种无状态的协议,客户端与服务器建立连接并传输数据,在数据传输完成后,本次的连接将会关闭,并不会留存相关记录。

服务器无法依据连接来跟踪会话,也无法从连接上知晓用户的历史操作。这严重阻碍了基于Web应用程序的交互,也影响用户的交互体验。

某些网站需要用户登录才进一步操作,用户在输入账号密码登录后,才能浏览页面。对于服务器而言,由于HTTP的无状态性,服务器并不知道用户有没有登录过,当用户退出当前页面访问其他页面时,又需重新再次输入账号及密码。

1. Cookie机制

为解决HTTP的无状态性带来的负面作用,Cookie机制应运而生。Cookie本质上是一段文本信息。

当客户端请求服务器时,若服务器需要记录用户状态,就在响应用户请求时发送一段Cookie信息。

客户端浏览器会保存该Cookie信息,当用户再次访问该网站时,浏览器会把Cookie做为请求信息的一部分提交给服务器。

服务器对Cookie进行验证,以此来判断用户状态,当且仅当该Cookie合法且未过期时,用户才可直接登录网站。

2. Cookie的存储方式

Cookie由用户客户端浏览器进行保存,按其存储位置可分为内存式存储和硬盘式存储。

内存式存储将Cookie保存在内存中,在浏览器关闭后就会消失,由于其存储时间较短,因此也被称为非持久Cookie或会话Cookie。

硬盘式存储将Cookie保存在硬盘中,其不会随浏览器的关闭而消失,除非用户手工清理或到了过期时间。由于硬盘式Cookie存储时间是长期的,因此也被称为持久Cookie。

3. Cookie的实现过程

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值