爬虫工作流程
1、请求数据
协议:http https websocket
注意请求过程中的 headers(请求头)中User-Agent referer cookies
请求库:urllib requests
工具:fiddler charles
2、解析数据
正则表达式
bs4
lxml-xpath
3、数据持久化
文件:json txt
数据库:mysql mongodb
可视化
4、反爬
cookies应用
ip代理
验证码
js加密
selenium驱动chrome/phantomjs pyv8库
5、爬虫框架
scrapy
pyspider
一、协议
http 单向通信
特点
1、支持客户端/服务端模式 即 请求/响应模式
2、请求方法:get(参数在url) post
url:统一资源定位符 范式:http://host:port/path?key1=value1&key2=value2 默认端口 80
3、能够传递任意类型的数据对象,由content-type标记
4、无状态 ---> cookie session保存会话,识别身份
http请求/响应过程
1、客户端连接客户端 建立TCP套接字连接
2、客户端发送http请求
3、服务端接受请求,返回响应
4、服务端主动释放套接字,关闭tcp连接
http1.0 一次request 一次 response http1.1 多次request 多次response
返回状态码
1xx:请求已接受,继续处理
2xx:成功
3xx:重定向
4xx:客户端错误 请求语法有问题
5xx:服务器错误
常见的状态码
200 OK
204 No Content 表示请求已成功处理,但是没有内容返回
301 Moved Permanently 永久重定向,表示请求的资源已经永久的搬到了其他位置
303 See Other 表示请求资源存在另一个URI,应使用GET定向获取请求资源
304 Not Modified 意味着资源没有被修改因为请求头指定的版本跟本地保存的版本并未修改或没有匹配。这说明没有必要重新传输资源,因为客户端仍然有一个以前下载的副本。
305 被请求的资源必须通过指定的代理才能被访问。
308:使用原有的地址请求方式来通过新地址获取资源。
400 Bad Request 表示请求报文存在语法错误或参数错误,服务器不理解
401 Unauthorized 表示发送的请求需要有HTTP认证信息或者是认证失败了
403 Forbidden 表示对请求资源的访问被服务器拒绝了
404 Not Found 表示服务器找不到你请求的资源 也有可能服务器就是不想给你然后骗你找不到
500 Internal Server Error 表示服务器执行请求的时候出错了
503 Service Unavailable 表示服务器超负载或正停机维护,无法处理请求
https
默认端口 443
加密算法
1、对称加密 有一个密钥进行加密和解密 DES AES
客户端将加密数据和密钥发给服务端,服务端解密数据--->不可靠
2、非对称加密 有一个公钥和私钥 公钥加密 私钥解密 RSA ECC 一般用于少量数据加密(加密耗时较久)
服务端生成公钥和私钥---->客户端请求公钥--->客户端加密数据并发送给服务端--->服务端用私钥解密
相对可靠,注意中间人攻击
3、hash算法 MD5 加盐
把数据映射成固定长度的哈希值,不可逆(不能由哈希值算出原始数据)
可以用来检验数据完整性(数据修改后会生成新的哈希值)、数据压缩(哈希值长度固定)
https采用证书 避免中间人攻击 服务器把公钥放在证书里面发给客户端,中间人没有证书
websocket 双向通信 全双工
持久化协议,第一次请求仍然用http协议,只是客户端会带上将请求升级成websocket的参数
服务端收到客户端请求后,升级成websocket协议,陆续将数据发给客户端(服务端会保持连接),
后面有新数据生成,无需客户端再次请求,服务端会主动把数据发给客户端,例如斗鱼的弹幕
原文地址:https://www.cnblogs.com/woaixuexi9999/p/9241100.html