Python3网络爬虫开发--爬虫基础
网络爬虫基础
1.1 HTTP基本原理
1.1.1 URI和URL
URI即统一资源标志符,URL即统一资源定位符。
有这样一个链接,http://test.com/test.txt
,在这个链接中,包含了访问协议https,访问目录(即根目录),资源名称(test.txt)。通过这样的链接,可以在互联网上找到这个资源,这就是URI/URL。
URL是URI的子集,每个URL都是URI,但在URI中还包含另一个子类URN,即统一资源名称,可以唯一标识这本书,但是没有指定到哪里定位这本书。
在当今网络中,很少使用URN,一般来说URI就是URL。
1.1.2 超文本
超文本就是网页的HTML源代码。
在浏览器中任意打开一个页面,右击选择检查,点击Elements就可以看到网页的源代码,里面包含了各种标签,网站正是解析了这些代码才形成了网页,这些代码就是超文本。
1.1.3 HTTP和HTTPS
在URLhttp://test.com/test.txt
中,开头通常都是http
或者https
这就是访问资源需要的协议类型。
HTTP,中文名为超文本传输协议,用于从网络传输超文本数据道本地浏览器,保证高效而准确的传送超文本文档。
HTTPS,中文名为超文本传输安全协议,是HTTP的安全版,即HTTP下加入SSL层,简称HTTPS。因此,它传输的内容都是经过SSL加密的,它的主要作用是:
- 建立一个信息安全通道来保证数据传输安全。
- 确认网站的真实性。使用HTTPS的网站,都可以通过点击浏览器地址栏的锁头标志查看网站的真实信息。
1.1.4 HTTP请求过程
当我们在浏览器地址栏中输入了一个URL,回车之后,浏览器进行加载,就可以看到页面内容。
在这个过程中,就是我们的浏览器向网站服务器发送了一个请求,网站解析后,返回给浏览器一个回应,回应中包含了页面的源代码等,浏览器解析之后,就呈现出了网页。
1.1.5 请求
请求,由客户端向服务端发出,包括四部分内容:
- 请求方法
- 请求网站
- 请求头
- 请求体
1.请求方法
常见的请求方法有两种:GET和POST。
GET请求:在浏览器中输入URL并回车,这就是一个GET请求,请求的参数直接包含在URL中。
POST请求:在表单提交时发生,例如在登陆时,填写账号密码,点击登陆,通常就会发起一个POST请求,请求的数据通常一表单的形式传输。
GET和POST有如下区别:
- GET请求的参数通常包含在URL中,数据可以在URL中看到;post请求的URL不包含数据,数据以表单形式传输,包含在请求体中。
- GET请求提交的数据最多只有1024字节;POST在数据量上没有限制。
此外还有其他请求方法:
GET 请求页面,并返回页面内容。
HEAD 类似与GET请求,返回的相应中不含具体内容,用于获取报头。
POST 大多数用于提交表单或者上传文件,数据包含在请求体中。
PUT 从客户端向服务器传送的数据取代指定文档中的内容。
DELETE 请求服务器删除指定页面。
CONNECT 把服务器当跳板,让服务器代替客户端访问其他网页。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或者诊断。
2. 请求的网址
即是统一资源定位符URL。
3.请求头
用来说明服务器要使用的附加信息。
Accept:请求报头域,用于指定客户端可接受哪些信息。
Accept-Language:指定客户端可接受的语言类型。
Accept-Encoding:指定客户端可接受的内容编码。
Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器货网关的位置。
Cookie:也常用Cookies。这是网站为辨别用户而存储在用户本地的数据,主要功能为维持当前访问对话,登陆之后,服务器对应信息就会存储在Cookies中,每当浏览器向服务器发出请求时,就会在请求头中加入Cookies,服务器以此辨识用户身份,并且识别状态为登陆状态,返回登陆后的结果。
Referer:标识这个请求从哪个页面发出。
User-Agent:一个特殊的字符串头,使服务器识别用户的操作系统及版本,浏览器及版本等信息。制作爬虫时使用此信息伪装成浏览器。
Content-Type:及互联网媒体类型,在HTTP协议消息头中用来表示具体请求中的媒体信息类型。