Python爬虫是什么?

 一、爬虫的概念和作用

1.1 概念:

        网络爬虫也叫网络蜘蛛,特指一类自动批量下载网络资源的程序,这是一个比较口语化的定义。更加专业和全面对的定义是:网络爬虫是伪装成客户端与服务端进行数据交互的程序.

1.2 作用

1.2.1 数据采集

        大数据时代来临,数据就是核心,数据就是生产力,越来越多的企业开始注重收集用户数据;而爬虫技术是收集数据的—种重要手段。

1.2.2 搜索引擎

        百度,谷歌等搜索引擎都是基于爬虫技术。

1.2.3 模拟操作

        爬虫也被广泛用于模拟用户操作,测试机器人,灌水机器人等。

二、爬虫原理

        伪装成服务端与客户端交互

2.1 网络架构(客户端和服务端)

        (1) c/s 即client server客户端服务端

        (2) b/s即 browser server浏览器服务端

        (3) m/s 即 mobile server移动端服务端
        互联网的飞速发展是商业经济推动的。目前几乎所有的商业应用都是基于互联网的,它们一般采用c/s架构b/s架构或者m/s架构
6392dbbb221d4d0faeb474327f816404.png

 2.2 HTTP协议(数据交互)

2.2.1 原因

        计算机之间的交流与人之间的交流类似,人之间要说汉语,遵循一定的语法结构,普通话,声音洪亮等要求,这些要求,约数,或规则.也可以叫做协议;这种协议保障了交流可能,能够互相理解对方传达的具体信息;计算机之间也是需要-种规则,保障之间信息的有效交流,这就是HTTP协议。

2.2.⒉概念和特点

(1)HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(Www: World WideWeb )服务器传输超文本到本地浏览器的传送协议。

(2)目前互连网上90%的网络传输都是基于http协议。

(3)HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等) ;ps:使用TCP通信协议的重要的原因是基于其面向连接的特点;

2.2.3 HTTP协议的使用

(1)HTTP请求流程

         一次http请求的基本流程是,有客户端向服务端发起─次请求(request),而服务器在接收到以后返回给客户端一个响应(response)。所以一次完整的http请求包含请求和响应两部分。

7cbaa0951b4b432da26ace0ceb868f12.png
(2)URL(网址)

        发送http请求时,通过URL对网络资源进行定位。
                 URL (Uniform Resource Locator),中文叫统一资源定位符。是用来标识某一处资源的地址。也即是我们常说的网址。以下面这个URL为例,介绍下普通URL的各部分组成:

023e939bc8714d80b14f2779b6169522.png

示例网址: https://ssr1.scrape.center/

输入网址,我们的数据就显示出来了

34edccdcb49f405e937d212825d0cd4c.png

(3)打开调试面板

        方式一:F12/ctrl+shift+l

        方式二:

adf9bdd98564429c9f51f0e3ea41d86b.png

获取到网站数据
d3d0e88a35a34b189b830e66fd69d2bf.png
        

4b5c6ed6c49943b3b5ffffa3a5c626f1.png

查看请求url和响应

选择会话

709d1b7865f44f50bc71241cfe51a256.png
 63109d26ef034a389a9a1b3433d72c89.png

1bcf66f52a074539886de8219cdf67ff.png

2.3 HTTP请求格式(请求行,请求头,空行,请求体)

客户端发送一个HTTP请求到服务器的请求消息包括以下部分:请求行,请求头,空行和请求数据。
fdf78eb8d39b48528c3f82b06ba5f09c.png

(1)请求行

        根据http标准,http请求可以使用多种请求方法。

        1.0定义了三种请求方法:GET,POST和HEAD方法

        1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
 e400783111c041db90452e6353d9c1a8.png

注意:

        (1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405 (Method Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not
lmplemented)。
        (2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法

常用方法:

GET
        1.主要是负责从服务器获取数据

        2.URL中添加请求参数,显示在地址栏

        3.请求字符串限制1024个字节

        比PoST 更加高效和方便。
POST

        1.主要负责向服务器提交数据

        2.没有大小限利
        比'GET'传递数据量大,安全性高。

66ecfb32f0764315a126783039246241.png

(2)请求头 

        请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号"∵"分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的浏览器类型;

referer:页面跳转处,表明产生请求的网页来自于哪个URL,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

Accept:客户端可识别的响应内容类型列表;星号“*”用于按范围将类型分组,用“/"指示可接受全部类型,用”type/*"指示可接受type类型的所有子类型;

 Accept-Language:客户端可接受的自然语言;. Accept-Encoding:客户端可接受的编码压缩格式;. Accept-Charset:可接受的应答的字符集;

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机;. connection:连接方式(close或 keepalive);

 Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;. Content-Length:发送给HTTP服务器数据的长度。

Content-Type:具体请求的媒体的类型信息,力图text/html 代表HTML格式,image/gif代表gif图片application/json代表son类型

Content-Range:响应资源的范围。可以在每次请求中标记请求的资源范围,在连接断开重连时,客户端只请求该资源未下载的部分,而不是重新请求整个资源,实现断点续传。

Cache-Control:指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Contro并不会修改另一个消息消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、man-age、max-stake、minr-fresh、only-if-cached;响应消息中的指令包括public、privete、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age

293f038a49c049b6a538f67605077cbc.png

(3)空行:

         最后一个请求头之后是一个空行,发送回车符和换行符,诵知服务器以下不再有请求头;

(4)请求体: 

        请求体不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求体相关的最常使用的是包体类型Content-Type和包体长度Content-Length;

2.4 HTTP响应格式(状态行,响应头,空行,响应正文)

8f1a9aa2c87a4754822263c76a8ae76e.png

(1)状态行:

状态行由HTTP协议版本、状态码和状态码的描述文本3个部分组成,他们之间使用空格隔开;

状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:

        1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;                                

        2xx:表示服务器已成功接收到请求并进行处理;

        3xx:表示服务器要求客户端重定向;

        4xx:表示客户端的请求有非法内容;

        5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

状态码描述文本有如下取值:

         200 OK:表示客户端请求成功;

        400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解;

        401 Unauthonzed:表示请求未经授权,该状态代码必须与WWW-Authenticate 报头域一起使用;

        403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因;

        404 Not Found:请求的资源不存在,例如,输入了错误的URL;

        500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求;

        503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;

(2)响应头

         Allow:服务器支持哪些请求方法(如GET、POST等)。

        Date:表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,Dec200104∶25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。

        Set-Cookie:非常重要的header,用于把cookie发送到客户端浏览器,每一个写入cookie都会需要一个Set-Cookie。

        Expires:指定Response的过期时间,从而不再缓存它,重新从服务器获取,会更新缓存。过期之前使用本地缓存。降低服务器负载,缩短加载时间。

        Content-Type WEB:服务器告诉客户端自己响应的对急的类型和字符集。

、     Content-Encoding:内容编码格式

(3)空行

        响应头和响应体由空行连接。最后一个响应头之后是一个空行,发送回车符和换行符,通知客户端以下不再有请响应头:

(4)响应体

        该响应消息的响应体是一个html文档。浏览器可以直接识别这个html文件。而我们访问的是一个jsp文件,响应回去的是一个html文件。说明服务器将该jsp翻译成了一个html,然后再响应给浏览器。

2.5 HTTP三点注意事项

        HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
        HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。
        HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。ps:这种无状态的情况,并不适合我们进行业务需求,我们需要保持我们的登录状态,方便我们访问。

2.6 HTTP请求流程总结

026183ab5f424449a1be446e62fb6ecb.png

b342e32168d74de7b1128deb9f314704.jpeg

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值