一、HTTP协议相关
http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。
1.URL
介绍URL之前首先说一下URI。URI(uniform resource identifier)是统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何定位这个资源。举个栗子:https://www.baidu.com/ 即为一个URL,通过该URL可以进入到百度搜索页面中。
2.HTTPS
HTTPS可以理解为HTTP的加密形式。HTTP(HyperText Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,上文中的链接即为HTTPS链接。
3.请求与响应
http请求过程可分为以下几个部分:建立TCP连接,浏览器向服务器发送请求命令,服务器应答,服务器关闭TCP连接以及浏览器接受到服务器响应的数据。
二、爬虫原理:
网络爬虫是一种从网页上抓取数据信息并保存的自动化程序。如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛(程序),沿着网络抓取自己的猎物(数据)。下面简要介绍一下爬虫的基本概念与流程:
1.获取网页
网络爬虫第一步首先是通过一定的方式获取网页。所谓获取网页可以简单理解为在本地发起一个服务器请求,服务器则会返回给我们网页的源代码,其中通信的底层原理较为复杂,而Python给我们封装好了urllib库和requests库等,这些库可以让我们非常简单的发送各种形式的请求。
2.提取信息
网页的源代码包含了非常多的信息,而想要进一步的获取我们的想要的信息则需要对源代码中的信息进行进一步的提取。此时我们可以选用python中的re库即通过正则匹配的形式去提取信息,也可以采用BeautifulSoup库(bs4)等解析源代码,除了有自动编码的优势之外,bs4库还可以结构化输出源代码信息,更易于理解与使用。
3.保存数据
在提取到网页源代码中我们想要的信息之后则需要在python中将它们保存起来,可以使用通过内置函数open保存为文本数据等,也可以通过第三方库保存为其它形式的数据,例如可以通过pandas库保存为常见的xlsx数据,如果有图片等非结构化数据还可以通过pymongo库保存至非结构化数据库中。
4.自动化程序
在经过前三步即ETL(Extract-Transform-Load)过程之后就可以将我们的爬虫代码有效地组织起来构成一个爬虫自动化程序,以至于需要相同或相似数据的时候可以高效复用。
.发起请求服务器返回状态码简析:
1、200:请求正常,服务器正常的返回数据。
2、301:永久重定向。比如在访问www.jingdong.com的时候会重定向到www.jd.com.
3、302:临时重定向。比如在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面。
4、400:服务器未找到请求的url,可能是请求的url错误。
5、403:服务器拒绝访问,权限不够。
6、404:服务器无法正常提供信息,或是服务器无法回应,且不知道原因。
7、500:服务器内部错误,可能是服务器出现bug了。