爬虫一:学习爬虫前需要先了解的一些知识

平时一直在白嫖各位大佬的分享,没有自己写博客作纪录的习惯.有某个名人说过,只要开始,就还不晚.那我就开始了,分享一些我整理的关于爬虫的知识,这一篇只讲一些我认为学习爬虫前需要先了解的知识,下一篇正式开始爬虫的学习.如果有什么错误的地方和补充,欢迎大家和谐补充.

一,什么是爬虫

爬虫,就是一种模拟客户端发送网络请求,接收请求对应的响应,按照一定的规则,自动的抓取互联网信息的程序.
理论上来说,只要时客户端(主要是指浏览器)能做的事,爬虫都能做.

二,爬虫的用途

1, 数据采集,提取目的数据
2, 软件测试,测试很多技术和python爬虫也是交叉的
3, 12306抢票,商品抢购 之类的
4, 投票刷票 类的
5, 短信轰炸
6,网络攻击(基于tcp-ip)
7, web漏洞扫描器

三,爬虫的分类

1,通用爬虫: 搜索引擎和大型web服务商的爬虫
2,聚焦爬虫:针对特定网站的爬虫,定向获取某方面的数据的爬虫
聚焦爬虫又有三大类:
①,累计式爬虫:从开始爬到结束,过程中会去重,直到爬完整个网站.
②,增量式爬虫:只爬取新产生的网页或发生了变化的旧网页
③,deep web爬虫(深网爬虫):需要用户登陆之后才能获取到的网页,的爬取,叫深网爬虫.(互联网商大部分资源都属于深网)

四,关于ROBOTS协议

robots协议全称是:网络爬虫排除协议.网站通过此协议来告诉搜索引擎哪些页面可以爬取,哪些布恩那个,是一个道德层面的约定.
robots协议一般放在网站的根目录下,如: http://www.taobao.com/robots.txt

五, url的格式

爬虫接触url非常多,所以回顾一下这方面的知识.
url的格式:scheme://host[:port#]/path/…/[?query-string][#anchor]
scheme:协议,http或https等
host:服务器的ip地址或域名
port:服务器端口
path:访问资源的路径
?query-string:发给服务器的参数
#anchor:锚,定位网页页面停留位置的参数

六,常用请求种类

针对不同的请求方式我们有不同的爬取方法,也在这里复习一下:
GET请求:传输的数据在url中
如https://movie.douban.com/subject/27010768/?tag=%E7%83%AD%E9%97%A8&from=gaia
‘tag’和’from’就是传输的参数,’%E7%83%AD%E9%97%A8’和’gaia’是他们各自的值,各参数间用’&'分割开.
特点:
1、get方式在url后面拼接参数,只能以文本的形式传递参数。
2、传递的数据量小,4kb左右(不同浏览器会有差异)。
3、安全性低,会将信息显示在地址栏。
4、速度快,通常用于对安全性要求不高的请求。

POST请求:传输的数据在请求体中
特点:
1、post提交数据相对于get的安全性高一些。(注意:抓包软件也会抓到post的内容,安全性要求高可以进行加密)
2、传递数据量大,请求对数据长度没有要求。
3、请求不会被缓存,也不会保留在浏览器的历史记录中。
4、用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等。
5、POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改)

请求报文的格式:
1,请求行: 请求方法+空格+url+空格+协议版本+回车符+换行符
如: GET / HTTP/1.1
2,请求头: 请求头头部字段名: 值+回车符+换行符
如:Connection: keep-alive
3,请求体(get请求没有这个):回车符+换行符+请求数据

常见请求头:
1,User-Agent:产生请求的浏览器类型;
2,Accept:客户端可识别的响应内容类型列表
3,Accept-Language:客户端可接受的自然语言
4,Accept-Encoding:客户端可接受的编码压缩格式;
5,Accept-Charset:可接受的应答的字符集;
6,Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
7,connection:连接方式(close 或 keepalive);
8,Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
9,Referer:页面跳转出,即从何处来到的当前页面.该参数主要用来防爬

常见响应状态码:
200 OK:表示客户端请求成功;
302: 临时转移至新的ur
400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解;
401 Unauthonzed:表示请求未经授权,该状态代码必须与 WWW-Authenticate 报头域一起使用;
403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因;
404 Not Found:请求的资源不存在,例如,输入了错误的URL;
500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求;
503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;

七,关于编码需要知道的

1,字节(bytes):一个字节是8位(bit),1bit是一个二进制长度.
2,字符:字符是文字和符号的总称
3,字符集;多个字符的集合,包括;ASCII, GB2312, Unicode等字符集
4,ASCII编码使用一个字节表示一个字符,Unicode编码通常使用两个字节即16位表示一个字符,UTF-8是Unicode的实现方式之一,它是一种可变长度的编码方式.可以是一个字节,也可以是三个字节.:

另外关于字符串格式数据和二进制格式数据之间的转换:
str类型通过encode(type)编码成bytes类型
bytes类型通过decode(type)解码成str类型
type默认是UTF-8方式

以上是一些我认为学习爬虫前需要先了解的知识,下一篇正式开始爬虫的学习

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值