第二章 爬虫基础
-
URI:Uniform Resource Identifier,即统一资源标志符。
URL:Uniform Resource Locator,即统一资源定位符。
URN:Uniform Resource Name,即统一资源名称。
-
超文本:网页的源代码HTML就可以称作超文本。F12检查查看。
-
协议类型:http, https, ftp, sftp, smb等。
http与https不同是后者是经过SSL加密的。(未加密网页如12306“您的连接不是私密连接”)
-
HTTP请求:
-
DOM
英文全称:Document Object Model,即文档对象模型。它定义了访问HTML和XML文档的标准。
W3C DOM标准被分为3个不同的部分。
- 核心DOM:针对任何结构化文档的标准模型。
- XML DOM:针对XML文档的标准模型。
- HTML DOM:针对HTML文档的标准模型。
根据W3C的HTML DOM标准,HTML文档中的所有内容都是节点。
- 整个文档是一个文档节点。
- 每个HTML元素是元素节点。
- HTML元素内的文本是文本节点。
- 每个HTML属性是属性节点。
- 注释是注释节点。
HTML DOM将HTML文档视作树结构,这种结构被称为节点树,如图2-11所示。
通过HTML DOM,树中所有节点均可通过JavaScript访问,所有HTML节点元素均可被修改,也可以被创建或删除。
节点树中的节点彼此拥有层级关系。父、子、兄弟等术语。
-
CSS选择器
-
爬虫的通俗易懂的解释
我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被
抓取下来了。
简单来说,爬虫就是获取网页并提取和保存信息的自动化程序。 -
静态网页和动态网页
静态网页的缺陷,比如想给网页的URL传入一个name参数,让其在网页中显示出来,是无法做到的。因此动态网页应运而生,可以动态解析URL中参数的变化,关联数据库并动态呈现不同的页面内容。不仅仅是HTML,还可以是JSP、PHP、Python等。还可以实现用户登录和注册的功能。
-
无状态HTTP
HTTP的无状态是指HTTP协议对事务处理是没有记忆能力的,也就是缺少状态记录。这意味着如果后续需要处理前面的信息,则必须重传,重复请求,然而这种效果显然不是我们想要的,这太浪费资源了,对于这种需要用户登录的页面来说,更是棘手。
这时两个用于保持HTTP连接状态的技术就出现了,它们分别是会话和Cookies。会话在服务端,也就是网站的服务器,用来保存用户的会话信息; Cookies 在客户端,也可以理解为浏览器端,有了Cookies,浏览器在下次访问网页时会自动附上它发送给服务器,服务器通过识别Cookies并鉴定出是哪个用户,然后再判断用户是否是登录状态,然后返回对应的响应。
我们可以理解为Cookies里面保存了登录的凭证,有了它,只需要在下次请求携带Cookies 发送请求而不必重新输人用户名、密码等信息重新登录了。因此在爬虫中,有时候处理需要登录才能访问的页面时,我们一般会直接将登录成功后获取的Cookies放在请求头里面直接请求,而不必重新模拟登录。 -
如何查看cookies?
开发者工具——Application——storage——cookies(P110)
会话Cookie和持久Cookie
从表面意思来说,会话Cookie就是把Cookie放在浏览器内存里,浏览器在关闭之后该Cookie即失效;持久Cookie则会保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户登录状态。其实严格来说,没有会话Cookie和持久Cookie之分,只是由Cookie的Max Age或Expires字段决定了过期的时间。
因此,一-些持久化登录的网站其实就是把Cookie的有效时间和会话有效期设置得比较长,下次我们再访问页面时仍然携带之前的Cookie,就可以直接保持登录状态。 -
代理
Proxy server。为了防止封IP而使用代理。
基本原理:代理网络用户去取得网络信息。实际上就是在本机和服务器之间搭建了一个桥,此时本机不是直接向Web服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给Web服务器,接着由代理服务器再把Web服务器返回的响应转发给本机。这样我们同样可以正常访问网页,但这个过程中Web服务器识别出的真实IP就不再是我们本机的IP了,就成功实现了IP伪装。
各种代理:FTP代理服务器、HTTP代理服务器、SSL/TLS服务器、RTSP代理、Telnet代理、POP3/SMTP代理、SOCKS代理等。高度匿名代理、普通匿名代理、透明代理、间谍代理。