java中的接口是类吗
307
2022-08-31
《python 爬虫开发与实战》HTTP标准详解(python和java哪个更值得学)
简介
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW 服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,减少网络 传输。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部 分,以及哪部分内容首先显示(如文本先于图形)等。之后的Python爬虫开发,主 要就是和HTTP协议打交道。
HTTP请求过程
·首先客户端与服务器需要建立连接,例如单击某个超链接,HTTP的工作就开始 了。·建立连接后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息,包括请求修饰符、客户机信息和可 能的内容。·服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息,包括服务器信息、实体信 息和可能的内容。·客户端接收服务器所返回的信息,通过浏览器将信息显示在用户的显示屏上, 然后客户端与服务器断开连接。
如果以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,在 显示屏输出,这些过程是由HTTP协议自己完成的。
HTTP状态码含义
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。在 浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息 头(server header)用以响应浏览器的请求。HTTP状态码主要是是为了标识此次 HTTP请求的运行状态。下面是常见的HTTP状态码:
·200——请求成功。·301——资源(网页等)被永久转移到其他URL。·404——请求的资源(网页等)不存在。·500——内部服务器错误。
HTTP头部信息
HTTP头部信息由众多的头域组成,每个头域由一个域名、冒号(:)和域值三 部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被 扩展为多行,在每行开始处,使用至少一个空格或制表符。 通过浏览器访问博客园首页时,使用F12打开开发者工具,里面可以监控整个 HTTP访问的过程。下面就以访问博客园的HTTP请求进行分析,首先是浏览器发出请 求,请求头的数据如下:
GET / HTTP/1.1 Host: cnblogs.comUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive If-Modified-Since: Sun, 30 Oct 2016 10:13:18 GMT
在请求头中包含以下内容:
·GET代表的是请求方式,HTTP/1.1表示使用HTTP 1.1协议标准。·Host头域,用于指定请求资源的Intenet主机和端口号,必须表示请求URL的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状 态码返回。·User-Agent头域,里面包含发出请求的用户信息,其中有使用的浏览器型号、 版本和操作系统的信息。这个头域经常用来作为反爬虫的措施。·Accept请求报头域,用于指定客户端接受哪些类型的信息。例如:Accept image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表 明客户端希望接受html文本。·Accept-Language请求报头域,类似于Accept,但是它用于指定一种自然语 言。例如:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务 器假定客户端对各种语言都可以接受。·Accept-Encoding请求报头域,类似于Accept,但是它用于指定可接受的内容编码。例如:Accept-Encoding:gzip.deflate。如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。·Connection报头域允许发送用于指定连接的选项。例如指定连接的状态是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接。·If-Modified-Since头域用于在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。如果时间一致,那么返回HTTP状态码304(不返回文件内容),客户端收到之后,就直接把本地缓存文件显示到浏览器中。如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端收到之后,会丢弃旧文件,把新文件缓存 起来,并显示到浏览器中。
请求发送成功后,服务器进行响应,接下来看一下响应的头信息,数据如下:
HTTP/1.1 200 OK Date: Sun, 30 Oct 2016 10:13:50 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding Cache-Control: public, max-age=3 Expires: Sun, 30 Oct 2016 10:13:54 GMT Last-Modified: Sun, 30 Oct 2016 10:13:24 GMT Content-Encoding: gzip
响应头中包含以下内容:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~