爬虫学习--http请求详解
上篇博客里面写了,爬虫就是发http请求(浏览器里面打开发送的都是http请求),然后获取到response,咱们再从response里面找到想要的数据,存储到本地。
咱们本章就来说一下什么是http请求,它里面都有哪些东西,我们在写爬虫的时候,怎么http请求里面哪些对我们的爬虫有影响。
http请求过程
咱们打开一个网站的时候,过程是这样的客户端(浏览器)发送请求到服务端(你打开的网站所在的服务器),服务端接收到请求,处理,返回数据给客户端(浏览器),然后咱们在浏览器里面看到了数据。
明白了这个过程之后呢,咱们再来说http请求里面都包含了什么东西。
请求方式
主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS
GET和POST的区别就是:请求的数据GET是在url中,POST则是存放在请求体里面。
GET:一般向服务器获取数据用get请求,get请求的数据都是放在url中的,实质上和post请求没有太大的区别,当然也可以用来向服务器发送数据。
POST:一般向服务器发送数据用post请求,post请求的数据放在请求体里。
HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
PUT:向指定资源位置上传其最新内容。
OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
DELETE:请求服务器删除Request-URI所标识的资源。
请求url
URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的格式由三个部分组成:
第一部分是协议(或称为服务方式)。 http/https
第二部分是存有该资源的主机IP地址(有时也包括端口号)。 www.nnzhp.cn/192.168.1.1:8888
第三部分是主机资源的具体地址,如目录和文件名等。 /index
爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。
请求头
一个请求由两部分组成, 请求头和请求体。
包含请求时的头部信息,如User-Agent,Host,Cookies等信息,user-agent就是你请求用的是什么浏览器,host就是服务端的地址,还有很多信息,服务端是如何分辨你是用的什么浏览器,你的ip地址就是从请求头里面获取到的。下面就是在请求我博客的时候,发送的头信息。

请求体
请求体就是发送数据的时候,数据放在请求体里面。get请求是没有请求体的,从上面的截图也能看到,下面是没有这个请求体的。post请求才有请求体。下面的截图可以看到登陆博客的这个请求是一个post请求,登陆的账号密码就是放在请求体里面的。

http响应
上面说了请求,下面说响应。
发送了请求,服务端要给返回数据嘛。这个就是响应,请求是你发出去的,响应是服务端返回给你的。
响应包含了2个部分,一个是响应头,一个是响应体。响应头里面包含了响应的状态码,返回数据的类型,类型的长度,服务器信息,Cookie信息等等。
响应体里面就是具体返回的数据了。
响应状态码
有很多响应状态,不同的状态码代表不同的状态,常见的状态码如:200代表成功,301跳转,404找不到页面,502服务端错误
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误 常见代码:
- 200 OK 请求成功
- 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
- 403 Forbidden 服务器收到请求,但是拒绝提供服务
- 404 Not Found 请求资源不存在
- 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
- 301 目标暂时性转移
- 302 目标永久性转移
响应头、响应体
看下图~


爬虫学习--http请求详解的更多相关文章
- 爬虫学习--Requests库详解 Day2
什么是Requests Requests是用python语言编写,基于urllib,采用Apache2 licensed开源协议的HTTP库,它比urllib更加方便,可以节约我们大量的工作,完全满足 ...
- Flink 从 0 到 1 学习 —— Flink 配置文件详解
前面文章我们已经知道 Flink 是什么东西了,安装好 Flink 后,我们再来看下安装路径下的配置文件吧. 安装目录下主要有 flink-conf.yaml 配置.日志的配置文件.zk 配置.Fli ...
- spring cache 学习——@CachePut 使用详解
1. 功能说明 当需要在不影响方法执行的情况下更新缓存时,可以使用 @CachePut,也就是说,被 @CachePut 注解的缓存方法总是会执行,而且会尝试将结果放入缓存(当然,是否真的会缓存还跟一 ...
- AJAX请求详解 同步异步 GET和POST
AJAX请求详解 同步异步 GET和POST 上一篇博文(http://www.cnblogs.com/mengdd/p/4191941.html)介绍了AJAX的概念和基本使用,附有一个小例子,下面 ...
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...
- [转]iOS学习之UINavigationController详解与使用(三)ToolBar
转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切 ...
- [转]iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
转载地址:http://blog.csdn.net/totogo2010/article/details/7682433 iOS学习之UINavigationController详解与使用(一)添加U ...
- 各大公司广泛使用的在线学习算法FTRL详解
各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据 ...
- 跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量
跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量 * This example program demonstrates the basic usage of a fuzz ...
随机推荐
- Units in Android
一般使用dp,不使用px.sp啥时候用呢?给TextView设置文字大小的时候用.
- Android之移动热修复
阿里云推出了移动热修复服务,听说这个服务傻瓜式接入,性能相对较好,对新技术比较好奇的我决定尝试一下. 1.首先,需要开通这个服务,创建应用 2.然后,在项目中接入服务.按照文档所述 第一步:gradl ...
- Oracle EBS FA 资产取值
SELECT fb.book_type_code, fth.ASSET_NUMBER, fdh.units_assigned, fdh.assigned_to, pf.FULL_NAME, fl.se ...
- 洗礼灵魂,修炼python(48)--巩固篇—模块
模块 其实前面都说过的,不过还是系统的再说一次,相信学到这,大部分都被搞忘了吧,所以再提一下,也为后面的博文做铺垫 1.什么是模块 在程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越 ...
- python 之路初(一):pycharm 安装 和 环境配置 和 中文乱码问题
从健身和学习中我一体会到坚持的力量.想写写东西的想法已经好久了,就是不知道怎么开始.最近生活开始给我各种攻击和磨练,我从声嘶力竭到沉默到默默坚持自己,改变自己并总结告诉自己:少说多看,看破不说破,宁愿 ...
- 用Python实现数据结构之二叉搜索树
二叉搜索树 二叉搜索树是一种特殊的二叉树,它的特点是: 对于任意一个节点p,存储在p的左子树的中的所有节点中的值都小于p中的值 对于任意一个节点p,存储在p的右子树的中的所有节点中的值都大于p中的值 ...
- 通过explain分析低效的SQL执行计划
之前我们讲过如何开启慢查询日志,这个日志的最大作用就是我们通过设定超时阈值,在执行SQL语句中的消耗时间大于这个阈值,将会被记录到慢查询日志里面.DBA通过这个慢查询日志定位到执行缓慢的sql语句,以 ...
- phoneGap使用 (MAC)
一.安装 ①先安装NodeJS(如果有的就不用安装了) http://nodejs.org/ ②.sudo npm install -g phonegap 需要等待安装完成 ③.检测是否安装成功 no ...
- DataStream_操作基本类型数据的流对象
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; imp ...
- android Application Component研究之Activity(二)
http://blog.csdn.net/windskier/article/details/7172710 本文为原创文章,欢迎转载!转载时请注明出处:http://blog.csdn.net/wi ...