爬虫前奏——网络请求
网络请求的方式
http网络请求有八种 : get post head put delete connect trace options
最常见的请求方式为 get 和 post
get:当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是get方式。get方法要求服务器将url定位的资源放在响应报文的数据部分,回送给客户端。使用get方法时,请求参数和对应的值附加在url后面,利用一个问号(“?”)代表url的结尾与请求参数的开始,传递参数长度受限制。例如,/index.html?id=100&op=bind,这样通过get方式传递的数据直接表示在地址中。
post:post方法将请求参数封装在http请求数据中,以名称/值的形式出现,可以传输大量数据,这样post方式对传送的数据大小没有限制,而且也不会显示在url中。
head:head就像get,只不过服务端接受到head请求后只返回响应头,而不会发送响应内容。当我们只需要查看某个页面的状态的时候,使用head是非常高效的,因为在传输的过程中省去了页面内容。
get 和post的区别:
1.get提交,请求的数据会附在url之后(就是把数据放置在http协议头<request-line>中),以?分割url和传输数据,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow&verify=%e4%bd%a0 %e5%a5%bd。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用base64加密,得出如: %e4%bd%a0%e5%a5%bd,其中%xx中的xx为该符号以16进制表示的ascii。
post提交:把提交的数据放置在是http包的包体<request-body>中。
因此,get提交的数据会在地址栏中显示出来,而post提交,地址栏不会改变
注意:一般反爬做的好的网站原本用get请求就可以的可能会要求使用post方法 不能想当然
一般网络请求分为三个部分
一是url 二是data(post请求中含有)三是head
一般网络请求中常用到的参数
user-agent:浏览器名称,应对反爬必备的请求头伪装
referer:表明当前请求从哪个页面过来的
cookie:http协议是无状态的。cookie的存在可以帮助服务器识别是否为同一个用户发送的请求,一般需要登录才能访问的网站就需要cookie参数了。
http常用响应状态码
200:请求正常
301:永久重定向
302:暂时重定向
400:url错误
403:服务器拒绝访问,权限不够
500:服务器内部错误
详见
上一篇: Map 查找表操作