一、HTTP的请求过程
客户端向服务器发送请求,服务器在获取请求后,给服务器反馈数据响应。
1、请求
一般客户端发送请求中包含以下信息:请求方法、请求的目标网址、请求头、请求体;
请求方法
常见的请求方法有:GET方法和POST方法。
GET请求的参数会直接包含在URL里面,并且提交的数据最多只有1024字节;
POST请求其数据通常以表单的形式传输,提交数据没有限制;
当然还有一些其他请求方式,例如:HEAD、PUT、DELETE、CONNECT等方式。
请求网址
请求的网址,即统一资源定位符URL(Universal Resource Locator),该网址包含了访问协议、访问路径、资源名称。
URL是URI的子集,URI的另一个子集是URN,URN只命名资源而不指定如何定位资源;
请求头
Accept:请求报头域,用于指定客户端可以接受哪些类型的信息;
Accept-Language:指定客户端可接受的语言类型;
Accept-Encoding:指定客户端可接受的内容编码;
Host:用于指定请求资源的主机IP和端口号;
Cookie:用于网站分辨用户进行会话跟踪而存储在用户本地的数据;
Referer:用来标识这个请求发送的来源;
User-Agent:使服务器识别出客户使用的操作系统及版本,浏览器及版本等信息;
Content-Type:用来表示具体请求中媒体类型信息;
请求体
对GET 类型的请求来说为空,对POST类型的请求来说,请求体中包含请求来的数据表单。
2、响应
服务器返回给客户端的响应信息包括:响应状态码、响应头、响应体;
响应状态码
响应状态码表示服务器的响应状态,常见的有:200表示正常运行,404表示页面未找到,500表示服务器内部发生错误;
响应头
响应头包含以下常用信息:
Date:响应产生的时间;
Last-Modified:指定资源的最后修改时间;
Content-Encoding:指定响应内容的编码;
Server:包含服务器的信息;
Content-Type:标识返回的数据类型;
Set-Cookie:设置Cookie;
Expires:指定响应的过期时间;
响应体
响应的正文位于响应体中,请求的数据就位于响应体中。
二、网页基础
1、网页的组成
HTML、CSS、JavaScript
2、网页的结构
爬虫的基本原理
一、认识爬虫
1、爬取流程(思想)
(1)获取网页
首先要明确需要获取的数据存在于哪一个网页中,获取该网页的URL,申请访问后,一般是获得该网页的源代码,这样就可以从中提取想要的信息了。
(2)提取信息
在第一步获得网页源代码后,需要将数据从源代码中解析出来,最常用的方法是使用正则表达式进行匹配,还可以根据网页节点的特点,使用BeautifulSoup、lxml、XPath等。
注意一点,对于使用JavaScript渲染的网页,需要使用Selenium、Splash这样的库来实现模拟JavaScript的渲染。
(3)保存数据
提取出数据后就需要将数据保存下来,保存的方式多种多样:
- 保存数据文件为.TXT、JSON文本、excal文件等;
- 保存数据到数据库,MySQL、MongoDB等;
- 保存到远程服务器;
(4)自动化处理
在爬取时经常出现一些重复性操作,而这些操作不需要人力去解决,通过自动化处理,使爬虫的爬取工作能够更加高效、有序进行。
2、会话和cookie
会话用来存储特定用户会话所需的属性及配置信息,会话处于服务端;
cookie指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据,处于客户端;
主要处理用户登录问题。
一般情况下,程序不通知服务器删除会话,服务器不会擅自删除一个会话,除非这个会话超过了失效时间,否则服务器会一直保留该会话。
3、代理的基本原理
代理网络用户去取得网络信息。代理服务器处于客户端和服务器之间,相当于二者的一个信息中转站。
代理的作用
- 突破自身的访问权限,能够访问一些平时不能访问的站点;
- 提高访问速度;
- 隐藏真实IP,防止自身IP地址被封锁