网络爬虫的第一步是爬取网页(获取源代码),爬取网页要向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,回车之后查看记录表。

python 库 解析数据包 python解析http_python 库 解析数据包

进入菜鸟教程网页,选择点击记录www.runoob.com选项,然后选择右侧的请求头。请求头显示对的是HTTP请求和响应的详细信息。

python 库 解析数据包 python解析http_HTTP_02

HTTP请求

分为以下四部分内容:

(1)请求的网站(Request URL)

URL可以唯一确定请求资源。例如:https://www.runoob.com/

(2)请求方法

请求方法:HEAD、PUT、DELETE、CONNECT、OPTIONS、TRACE、GET、POST等,其中GET和POST最常用。

GET方法:请求指定的网页信息,并返回网页内容,提交的数据最多只有1024字节。

python 库 解析数据包 python解析http_HTTP_03

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数据

python 库 解析数据包 python解析http_服务器_04

(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位置。