网络爬虫学习之路(一) 准备工作
1. 必备的工具
Python
- 原因:编程体验良好,爬虫库内容丰富完善,网上的教学资源也较多。
2. 必备的知识
常常会去爬取的url协议头:http协议与https协议,应去大致了解两者区别及在分别爬取的过程中可能会遇到的不同。对爬虫时填入的主要参数URL也需有较好了解。
2.1 http协议
超文本传输协议,默认端口号80,是一个简单的请求-响应协议,通常运行在TCP之上,请求与响应消息的头以ASCII码形式给出,消息内容具有一个类似MIME的格式。典型的HTTP事务处理过程:
- (1) 客户与服务器建立连接;
- (2) 客户向服务器提出请求;
- (3) 服务器接受请求,并根据请求返回响应的文件作为应答;
- (4) 客户与服务器关闭连接。
2.2 https协议
安全套接字层超文本传输协议,默认端口号443,它是http的改进,是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版,实现安全的方法是在HTTP下加入SSL(Secure Sockets Layer)安全套接层。对https协议的申请使用是需要交费的,需要去CA(Certificate Authority)认证,于是服务器便有了一个证书,在传输过程中使用加密传输与身份认证。
- 总结:爬取https网站的数据可能会不完整,而http网站爬取的数据会较齐全。
2.3 URL格式
统一资源定位符,时WWW的统一资源定位标志,也就是我们平常所说的网址。
组成url的三个主要部分:方案(scheme)、主机(host)和路径(path)。
- 例如:https://www.baidu.com
- 其中https为方案,www.baidu.com为主机,不过这里是以域名的形式展现的,写入它的服务器主机IP地址202.108.22.5效果也是一样的,百度的服务器IP有很多,可以通过在电脑DOS界面中输入 ping www.baidu.com进行查看。而跟在之后的便是路径,它比较类似计算机系统中的文件系统,可以把百度首页看作根目录,之后的路径便是其根下的子目录或子文件了。
2.4 两种常用的http请求方法
post:向指定的资源提交要被处理的数据
get:从指定的资源请求数据
- 可以明显的看出请求肯定比提交要无害得多,故请求不会被服务器限制,而提交则可能会被服务器限制。需要注意得是get的数据类型只能是ASCII字符,而post没有限制。
2.5 关于http请求头的简要描述
请求头,顾名思义即请求时的头部信息,向服务器发出请求时,需额外指明一些请求类型,这里列出几个较为常用的类型。
- User-Agent:浏览器类型。
- Host:初始URL中的主机和端口
- Cookies:小型文本文件,存储于单个用户上的小型缓存。
2.6 http常见响应状态
- 200 OK 请求成功
- 301 Moved Permanently 资源已永久移动至新位置
- 302 Found 资源已临时移动至其他位置
- 400 Bad Request URL错误
- 401 Unauthorized 请求未经授权
- 403 Forbidden 服务器拒绝提供服务
- 404 Not Found 请求资源不存在
- 500 Internal Server Error 内部服务器发生不可预期的错误
- 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复
3. 必备的学习手册
目前这里推荐一本已经大获好评的爬虫学习图书 《Python网络数据采集》,以及一本崔庄才老师的 《Python3网络爬虫开发实战》。
附上两书的官方网址: