OSI
物理层:电器链接;
数据链路层:交换机,STP,帧中继;
网络层:路由器,IP协议
传输层:TCP、UDP协议
会话层:建立通信连接,网络拨号
表示层:每次链接只处理一个请求
应用层:HTTP、FTP
一、HTTP
和ssl协议同为当前互联传输到安全的主流协议
应用层的协议
无连接:每次链接只处理一个请求
无状态:每次链接、传输都是独立的
二、Request Header
Accept: text/plain //纯文本
//JSON
Accept-Charset: utf-8
Accept-Encoding: gzip, deflate //是否进行压缩,指定压缩的方式
//URLlib2
Accept-Language: en-US
Connection: keep-alive //传输的过程TCP不断开直到数据传输结束(http1.1默认打开)
Content-Length: 348 //字节数
If-Modified-Since //指定在某一时间之前没有数据变化返回304状态从缓存读取数据
Content-Type: application/x-www-form- urlencoded
Date: Tue, 15 Nov 1994 08:12:31 GMT
Host: en.wikipedia.org:80 //虚拟主机指定具体指向哪个域名
User-Agent: Mozilla/5.0 (X11; Linux x86_64; //告诉服务端我是什么类型的浏览器
rv:12.0) Gecko/20100101 Firefox/21.0
Cookie: $Version=1; Skin=new;
//JSON
Accept-Charset: utf-8
Accept-Encoding: gzip, deflate //是否进行压缩,指定压缩的方式
//URLlib2
Accept-Language: en-US
Connection: keep-alive //传输的过程TCP不断开直到数据传输结束(http1.1默认打开)
Content-Length: 348 //字节数
If-Modified-Since //指定在某一时间之前没有数据变化返回304状态从缓存读取数据
Content-Type: application/x-www-form- urlencoded
Date: Tue, 15 Nov 1994 08:12:31 GMT
Host: en.wikipedia.org:80 //虚拟主机指定具体指向哪个域名
User-Agent: Mozilla/5.0 (X11; Linux x86_64; //告诉服务端我是什么类型的浏览器
rv:12.0) Gecko/20100101 Firefox/21.0
Cookie: $Version=1; Skin=new;
三、Response Header
Accept-Patch: text/example;charset=utf-8
Cache-Control: max-age=3600 //缓存相对静态的数据
Content-Encoding: gzip
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT //最后修改的时间
Content-Language: da
Content-Length: 348
ETag: "737060cd8c284d8af7ad3082f209582d“
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Location: http://www.w3.org/pub/WWW/People.html //网页位置移开返回302状态码定位到需要跳转的地址
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1 //cookie存储服务端的身份ID
Status: 200 OK
Cache-Control: max-age=3600 //缓存相对静态的数据
Content-Encoding: gzip
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT //最后修改的时间
Content-Language: da
Content-Length: 348
ETag: "737060cd8c284d8af7ad3082f209582d“
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Location: http://www.w3.org/pub/WWW/People.html //网页位置移开返回302状态码定位到需要跳转的地址
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1 //cookie存储服务端的身份ID
Status: 200 OK
四、Request Method
五、Status Code
2XX 成功
3XX 跳转
4XX 客户端错误
500 服务器错误
300
- 300 Multiple Choices 存在多个可用的资源,可处理或丢弃
- 301 Moved Permanetly 重定向
- 302 Found 重定向
- 304 Not Modified 请求的资源未更新,丢弃
400/500
- 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
- 403 Forbidden 服务器收到请求,但是拒绝提供服务
- 404 Not Found 请求资源不存在,eg:输入了错误的URL
- 500 Internal Server Error 服务器发生不可预期的错误
- 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
六、HTTPS
诞生的背景:传统http中的传输的数据都是明文容易被截获和篡改,存在安全漏洞
client→Router→Internet→Server
HTTP发起→SSL→Socket→Socket→SSL→Server接受
公钥私钥(证书对)的非对称加密:只有共钥加密的数据只有私钥才能解开
常见的加密算法 RSA SHA
七、抓取方案
robots.txt一般存在网站的根目录,里面嵌有改网站的sitemap
宽度优先vs深度优先:
- 重要的网页距离种子站点比较近;
- 王维网的深度并没有很深,一个网页有很多路径可以到达;
- 宽度优先有利于多爬虫并行合作抓取;
- 深度限制与宽度优先相结合
定制抓取:
- 按板块;
- 按内容;
- 网站特定结构;
- 利用搜索
2.3多线程并行及排重
2.4用MySQL 信息存储
3.进阶
3.1网站服务结构
3.2Cookie及 登录处理
3.3控制抓取的节奏
3.4日志
3.5守护进程
4.实战
4.1网页结构分析
4.2网页抓取方案
4.3数据提取
4.4存储方案