《Python3网络爬虫开发实战》笔记 第2章 爬虫基础

搞了一大轮环境配置,终于开始学习爬虫的基础知识了!

2.1、 HTTP基本原理

         URI: Uniform Resource Identifier 统一资源标志符

         URL:   Universal Resource Locatior   统一资源定位符

         URL是URI的子集,,每个URL都是URI,但不是每个URI都是URL。URI还包括一个子类叫URN,统一资源名称

         超文本: 网页的源代码HTML。

         HTTP和HTTPS:

         HTTP: 超文本传输协议: 用于从网络传输超文本数据到本地浏览器的传送协议,能保证高交岙准确地传送超文本文档。

         HTTPS: 以安全为目标的HTTP通道。 即HTTP下加入SSL层。建立一个信息安全通道来保证数据传输的安全,并确认网站的 真实性。(在地址栏有个锁头标志来表示,也可以通过CA机构颁发的安全签章来查询)

        若要爬取HTTPS站点,就需要设置忽略证书的选项,否则会提示SSL链接错误。

         HTTP请求过程

         浏览器向网站所在服务器发送一个请求,网站服务器接收到这个请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器。 

          可以通过浏览器的开发者工具的网络功能来观察网络请示如何发生,有以下这些指标:

          Name: 请求的名称

          Status: 响应的状态码, 200为正常

          Type:    请求的文档类型

          Intiator:    请求源, 用来标记请求是由哪个对象或进程发起的。

          Size:    从服务器下载的文件和请求的资源大小

           Time:   发起请求到获取响应的所用的总时间。

         Waterfall: 网络请求的可视化瀑布流

         更详细的信息

          General:   Request URL为请求的URL, Request Method为请求的方法, Status Code为响应状态码, Remote Address为远程服务器的地址和端口

          Response Headers: 响应头

          Request Headers:  请求头

         请求 : 由客户端向服务器端发出,可以分为4部分内容

         1)请求方法: GET和POST,GET请求参数直接包含在URL中,最多只有1024字节;POST与表单一起提交。

              其他请求方法:

               GET,请求页面;

               HEAD,用于获取报头;

               POST,用于提交表单或上传文件,数据包在请求体中;

               PUT,从客户端向服务器传送的数据取代指定文档中的内容;

               DELETE,请求服务器删除指定页面;

               CONNECT,把服务器当作跳板,让服务器代替客户端访问其他网页;

               OPTIONS,允许客户端查看服务器的性能;

                TRACE,回显服务器收到的请求,主要用于测试或诊断。

       2)请求网址 URL 

       3)请求头 用来说明服务器要使用的附加信息。

             Accept:  请求报头域,用于指定客户端可接受哪些类型的信息

             Accept-Language:  指定客户端可接受的语言类型

             Accept-Encodeing: 指定客户端可接受的内容编码

             Host: 用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。

             Cookie:网站为辨别用户进行会话跟踪面存储在用户本地的数据, 主要功能是维持当前访问会话。

              Referer:  用来标识这个请求是从哪个页面发过来的,服务器可作为来源统计、防盗链处理。

             User-Agent:可以使用服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可伪装为浏览器,否则,会被识别出爬虫。

              Content-Type: 互联网媒体类型或MIME类型,表示具体请求中的媒体类型信息,例如: text/html, image/gif等

              请求头是请求的重要组成部分,在写爬虫时,大部分情况下都需要设定请求头。

         4)请求体: 一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体则为空。

               Request Headers中指定Content-Type为application/x-www-form-urlencoded,才会以表单数据的形式提交。

               application/x-www-form-urlencoded                                       表单数据

               multipart/form-data                                                                  表单文件上传

               application/json                                                                        序列化JSON数据

               text/xml                                                                                    XML数据 

       响应:由服务器端返回客户端,分为三部分:响应状态码、响应头和响应体

        1) 响应状态码: 表示服务器的响应码, 200表示正常响应,404表示网页未找到;500代表服务器内部发生错误。

        2) 响应头: 包含了服务器对请求的应答信息

            Date: 标识响应产生的时间

            Last-Modified:  指定资源的最后修改时间

            Content-Encoding:  指定响应内容的编码

            Server: 包含服务器的信息

            Content-Type:  文档类型,指定返回的数据类型是什么

            Set-Cookie   设置Cookies

             Expires: 指定响应的过期时间

        3)响应体  最重要的内容, 做爬虫请求网页后,要解析的内容就是响应体。

          

2.2 网页基础

       网页组成: 网页由HTML、CSS和JavaScript三大部分组成。

       网页结构:一个网页的标准形式是html标签内嵌head和body标签, head内定义网页的配置和引用, body内定义网页的正文。

       在HTML中,所有标签定义的内容都是节点,它们构成一个HTML DOM树。DOM(Document Object Model 文档对象模型)。

       DOM标准初分为3个不同的部分:

       核心DOM: 针对任何结构化文档的标准模型

       XML DOM: 针对XML文档的标准模型

       HTML DOM:  针对HTML文档的标准模型

       整个文档是一个文档节点,每个HTML元素是元素节点,HTML元素内的文本是文本节点,每个HTML属性是属性节点,注释是注释节点。

       选择器

        在CSS中,我们使用CSS选择器来定位节点, CSS选择器还支持嵌套选择,各个选择器之间加个空格分隔开便可以代表嵌套关系。

 

2.3 爬虫的基本原理

         爬虫就是获取网页并提取和保存信息的自动化程序。

        1、获取网页:获取网页的源代码,从源代码中获取有用信息,向服务器发送一个请求,返回的响应体就是网页源代码。最关键的部分是构造一个请求并发送给服务器,然后接收到响应并将其解析出来。可通过Python提供的urlllib、requests等来实现。

        2、提取信息:获取网页源代码后,接下来就分析源代码,从中提取想要的数据,通过采用正则表达式提取,通过CSS选择器或XPath来提取网页信息的库(BeautifulSoup、pyquery、lxml等)提取网页信息。

        3、保存数据:将提取的信息,以TXT或JSON文本保存,或保存到数据库。

        4、自动化程序:爬虫可以代替人来完成这些操作。

        能抓怎样的数据: HTML代码、JSON字串、二进制数据(图片、视频和音频)、CSS和Javascript文件。

        对于Javascript渲染页面的内容,或通过ajax后台调用,可使用Selenium和Splash来模拟Javascript渲染。

       

 2.4 会话和Cookies     

          很多网站需要实现用户注册和登录后才可以看到需要的内容,这种登录凭证是会话和Cookies共同产生的结果。

          无状态HTTP:指HTTP协议对事务处理是没有记忆能力的,也就是说服务器不知道客户端是什么状态。服务器完成响应后,就不会记录前后状态的变化。

           为解决无状态HTTP,保持HTTP连接状态,分别使用会话和Cookies,会话在服务端,也就是网站的服务器,用来保存用户的会话信息;Cookies在客户端或浏览器端,浏览器在下次访问时会自动附带上Cookies发送给服务器,服务器通过识别Cookies并鉴定哪个用户,然后再判断用户是否是登录状态,然后返回对应的响应。

            会话: 在Web中,会话对象用来存储特定用户会话所需的属性及配置信息。在Web页之间跳转时,存储在会话对象中的变量将不会丢失。

           Cookies: 指某些网站为了辨别用户身份,进行会话跟踪而存储在用户本地终端上的数据。

          会话维持:利用Cookies保持状态,

           1)客户端第一次请求服务器时,服务器会返回一个请求头中带有Set-Cookie字段的响应给客户端,用来标记是哪一个用户,并保存起来。

          2)下一次再请求该网站,浏览器会把Cookies放到请求头一起提交给服务器,Cookies携带会话ID信息,服务器检查该Cookies即可找到对应的会话是什么,然后再判断会话来以此辨认用户状态。

          Cookies和会话需要配合,一个处于客户端,一个处于服务端,二者共同协作就实现登录会话控制。

          Cookies属性结构
          Name: Cookies名称

          Value: Cookies的值, 值为Unicode字符,需要为字符编码;值为二进制数,则使用BASE64编码。

         Domain:可以访问该Cookies的域名

         Expires/Max Age: Cookies失效时间,

         Path:  Cookies使用路径。

        Size:Cookies的大小

        HTTP字段:Cookies的httponly属性, true时只有HTTP头中会带有Cookies信息。

        Secure: 该Cookies是否仅被使用安全协议传输。即HTTPS和SSL。

        对于会话,除非程序通知服务器删除,否则服务器会一直保留该会话。由于服务器为会话设置一个失效时间,当客户端上一次使用会话的时间超过这个失效时间,服务器就认为客户端已停止了活动,才会把会话删除以节省存储空间。

 

2.5 代理的基本原理

         由于网站可能采取一些反爬虫措施,使在爬虫时会出现错误,所以使用代理来实现IP伪装。

         基本原理:

         代理指的是代理服务器, proxy server,代理网络用户去取得网络信息。本机通过代理服务器访问Web服务器,然后Web服务器又通过代理服务器将返回的响应转发给本机,而Web服务器识别的真实IP地址就不是本机的IP地址,成功实现IP伪装。

         代理的作用:突破自身IP访问限制、访问一些单位或团体内部资源、提高访问速度、隐藏真实IP。

         爬虫代理:在爬取过程中通过不断更换代理,就不会被封锁。

         代理分类:

                根据协议区分: FTP代理服务器、HTTP代理服务器、SSL/TLS代理、RTSP代理、Telnet代理、POP3/SMTP代理和SOCKS代理。

                 根据匿名程序区分:高度匿名代理、普通匿名代理、透明代理和间谍代理。

           常见代理设置: 使用网上的免费代理、使用付费代理服务、ADSL拔号

 

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值