首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

web基础知识、python爬虫基础入门知识

1、HTTP协议

为什么我们要把HTTP协议放在第一位呢,因为它真的很重要!!!!我们在浏览器上方输入 baidu.com的时候,浏览器就会在前面自动加上 http:// 的字样。这是一个协议,是大家共同遵守的,要不然大家一人一个规则,岂不是乱了套了。

我们来详细说一下http协议。首先我们要能访问 baidu.com ,首先得具备两个条件,第一个就是要有百度的服务器,第二就是要有电脑或者手机或者能访问网站的硬件设备。就像食堂阿姨打菜一样,你指定要打哪个菜,阿姨就给你打哪个菜。但是你得说普通话,要不然阿姨听不懂,自然就没法给你打菜了。而这个普通话,就是http请求的规矩和要求。

HTTP请求由三部分组成,分别是: 请求行、消息报头、请求正文。在接收和解释请求消息后,服务器返回一个HTTP响应消息,HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。这个过程就像打菜的过程一样,我们发出的请求行就是我要打菜,消息报头和请求正文就是我要打西红柿炒鸡蛋。然后阿姨返回给我们的就是,状态行:我知道你要打菜,消息报头和响应正文就是:西红柿炒鸡蛋放这里了,拿走!

2、HTTP方法

一些常用的方法如下:

GET:请求指定页面信息,并返回实体主体

HEAD:跟GET类似,不返回具体的内容,用于获取报头

POST:向指定资源提交数据进行处理请求。可能导致新资源信息的建立和/或已有资源信息的修改

PUT:想客户端传送的数据取代指定的文档内容

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

CONNECT:HTTP/1.1中预留给能够将连接改为管道的方式的代理服务器

OPTIONS:允许客户端查看服务器性能

TARCE:回显服务器收到的请求,用于诊断或测试

我们要知道,一般来讲,GET表示向服务器请求URI对应的资源,POST表示向服务器提交数据,DELETE表示删除数据,PUT表示修改数据。但这都是一种约定,没有强制的要求,DELETE实现GET功能也是可以的。

3、报头字段

User-Agent:出现在请求报头中,表示客户端的操作系统、浏览器型号版本等信息。服务器可以根据此报头向客户端返回不同的页面以适应客户端。有些网站(知乎)会校验此报头,不填写或者不主流的报头都不能拿到正常的页面。因此自己在写爬虫的时候最好将从浏览器中拷贝到代码中。

Cookie:出现在请求抱头中,前面我们说过HTTP是基于请求与响应模式并且无状态的协议,之前举了打菜阿姨的例子,Cookie就相当于每次请求中的学生证,它可以记录用户的身份信息。当我们自己写爬虫的时候,如果需要登陆,并且登陆又有验证码或者短信验证时,最简单的方法就是从浏览器中把cookie拷贝到爬虫中,就可以骗过服务器了。

Set-Cookie:出现在响应抱头中,让客户端更新页面关联的Cookie,还是拿食堂阿姨的例子,如果你的响应报头有这个字段,意思就是阿姨重新给你了一个学生证,下次打饭你得用最新的学生证,原来的学生证不好使。如果你在模拟浏览器或者客户端登陆,需要将此报头更新已有的Cookie,不过Scrapy和requests都可以自动更新,因此不需要你再手动设置。

Content-Type:标明请求正文或者响应正文的格式,客户端或者服务器会根据此字段选择合适的方式解析正文内容,以下是一些常见的值

Content-Length:标明请求正文或者响应正文的长度,在使用requests构造请求的时候,我们不需要显式的加上此字段,requests会根据请求正文自动计算添加。

Content-Encoding:在某些情况下,正文会讲过压缩后传输,此字段会指明压缩的类型(gzip和压缩参数)

Transfer-Encoding:如果正文内容过长,HTTP协议允许将此字段设置为chunked,然后分块传输响应正文

Connection:在HTTP1.1之前的版本,不支持持久连接,所谓的持久链接意思就是:HTTP协议一般通过TCP协议实现,客户端和服务器经过TCP三次握手建立连接,在请求和响应结束之后,此连接继续保持,当之后还有请求的时候,就不需要重新通过三次握手再建立连接,这样可以极大的降低客户端和服务器的IO负载。

3、响应码:

2xx表示请求成功

3xx表示重定向

4xx表示客户端错误(403 Forbiden 404 Not Found)

5xx表示服务器错误(502 网关错误)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180911G0JR4N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券