网络爬虫的第一步是爬取网页(获取源代码),爬取网页要向web服务器发送构造的http请求,获得所需数据的http响应。
爬虫基础
- HTTP的基本原理
- HTTP请求
- (1)请求的网站(Request URL)
- (2)请求方法
- (3)请求头Request Headers
- (4)请求体
- (5)HTTP响应
- 响应状态码
- 响应头
HTTP的基本原理
在浏览器中输入URL,按回车键或点击搜索按钮,这是浏览器向Web服务器发送一个HTTP请求,Web服务器接收到这个请求后进行解析和处理,然后返回给浏览器对应的HTTP响应,之后浏览器对HTTP响应进行解析,显示网页内容。
打开Firefox浏览器,按F12或点击右键,选择“检查”,打开开发者工具窗口,选择“网络”。在搜索框中输入https://www.runoob.com,回车之后查看记录表。
进入菜鸟教程网页,选择点击记录www.runoob.com选项,然后选择右侧的请求头。请求头显示对的是HTTP请求和响应的详细信息。
HTTP请求
分为以下四部分内容:
(1)请求的网站(Request URL)
URL可以唯一确定请求资源。例如:https://www.runoob.com/
(2)请求方法
请求方法:HEAD、PUT、DELETE、CONNECT、OPTIONS、TRACE、GET、POST等,其中GET和POST最常用。
GET方法:请求指定的网页信息,并返回网页内容,提交的数据最多只有1024字节。
POST方法:向指定资源提交数据并进行请求处理(提交表单、上传文件),数据包含在请求体,提交没有字节限制。
(3)请求头Request Headers
以下是常见请求头和说明
Accept::指定客户端可识别的内容类型;
Accept-Encoding:指定客户端可识别的内容编码;
Accept-Language:指定客户端可识别的语言类型;
Cookie:网站为识别用户身份进行会话跟踪而存储在用户的本地的数据,主要功能是维持当前访问会话;
Host:指定请求的服务器的域名和端口号;
User-Agent:使用服务器识别客户端使用的操作系统及版本、浏览器及版本等信息,实现爬虫时加上此信息,可以伪装为浏览器;
Content-Type:请求的媒体类型信息;
Content-Length:请求的内容长度;
Referer:包含一个URL,用户以该URL代表的页面出发访问当前页面。
Content-Type和Post的关系:
application/x-www-form-urlencoded:表单数据
multipart/form-data:表单文件
application/json:序列化JSON数据
text/xml:XML数据
(4)请求体
GET的请求体为空,Post的请求体为表单数据
(5)HTTP响应
响应状态码
分为三部分内容:
第一个:Response Status Code (响应状态码):服务器的响应状态
以下是常见的响应状态码 、对应的英文名称和说明
100 Continue 服务器已收到请求的一部分,正在等待其余部分,应继续提出请求;
200 OK 服务器已成功处理了请求;
302 Move Temporarily 服务器要求客户端重新发送一个请求;
304 Not Modified 此请求返回的网页未修改,继续使用上次的资源;
404 Not Found 服务器请求不到的网页;
500 Internal Server Error 服务器遇到错误,无法完成请求。
响应头
以下是常见的响应头及其说明
Content-Encoding:Web服务器支持的编码类型;
Content-Language:响应体的语言;
Content-Length:响应体的长度;
Content-Type:返回内容的媒体类型;
Date:原始服务器消息发出的时间;
Expires:响应过期的日期和时间;
Last-Modified:请求资源的最后修改时间;
Set-Cookie:设置HTTPCookie;
Location:重定向接收到请求的URL位置。