看的书《Python3 网络爬虫开发实战教程》学习笔记

URI和URL和URN

URI:Uniform Resource Identifier(统一资源标识符)
URL:Uniform Resource Location(统一资源定位符)

URN:Universal Resource Name(即统一资源名称)

URL和URN 是 URI 的子集

image-20210118141820803

URL统一资源定位符

书上说的可能难理解

简单说他一个常用的链接比如https://www.baidu.com/a.png他直接就定位到了百度的a.png照片

URN即统一资源名称符

书上说的可能难理解

什么是一个URN下面举例

还是一个百度的一个a.png照片文件,URL是这样的https://www.baidu.com/a.png,但是用URN可能就是adsdasdascasda了唯一的一个字符串,如果你访问这个字符串不管照片放到都可以访问到,在不知道a.png在那都可以用adsdasdascasda了唯一的一个字符串这个访问到a.png文件。

使用URN可以在不知道其网络位置及访问方式的情况下讨论资源

URI统一资源标识符

URL和URN 是 URI 的子集

URN 用得非常少,所以几乎所有的 URI 都是 URL,一般的网页链接我们既可以称为 URL,也可以称为 URI

超文本

而网页的源代码 HTML 就可以称作超文本

http和https

我这个笔记有写

https://www.zssnp.top/2020/01/20/http%E5%8D%8F%E8%AE%AE/

网页基础

网站的构成就是有HTML、CSS 和 JavaScript构成的

这个学习过一点都知道,如果不知道的那爬虫就不用学习了,先学习web解一下在学习

爬虫的基本原理

简单来说,爬虫就是获取网页并提取和保存信息的自动化程序

Python 提供了许多库来帮助我们实现这个操作,如 urllib、requests 等。我们可以用这些库来帮助我们实现 HTTP 请求操作

我们在用 urllib 或 requests 抓取网页时,得到的源代码实际和浏览器中看到的不一样

现在网页越来越多地采用 Ajax、前端模块化工具来构建,整个网页可能都是由 JavaScript 渲染出来的,也就是说原始的 HTML 代码就是一个空壳,

例如

1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<meta charset="UTF-8">
<title>This is a Demo</title>
</head>
<body>
<div id="container">
</div>
</body>
<script src="app.js"></script>
</html>

会话和 Cookies

静态网页和动态网页

静态网页

下面这个就是静态网页没有调用然后后端代码比如JSP、PHP、Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
<meta charset="UTF-8">
<title>This is a Demo</title>
</head>
<body>
<div id="container">
<div class="wrapper">
<h2 class="title">Hello World</h2>
<p class="text">Hello, this is a paragraph.</p>
</div>
</div>
</body>
</html>

动态网页

动态网页非常灵活多变

我们现在遇到的大多数网站都是动态网站,它们不再是一个简单的 HTML,而是可能由 JSP、PHP、Python 等语言编写的,其功能比静态网页强大和丰富太多了

无状态 HTTP

就是当我们向服务器发送请求后,服务器解析此请求,然后返回对应的响应, HTTP 协议对事务处理是没有记忆能力的,然后就出现了会话和 Cookies

会话

会话比如比如,打电话时,没有挂断电话这中间的一系列过程可以称为一个会话

而在 Web 中,会话对象用来存储特定用户会话所需的属性及配置信息,而这个用户保持到信息会在服务器一直保存下去

Cookies

Cookies 指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据。

  • 会话 Cookie 就是把 Cookie 放在浏览器内存里,浏览器在关闭之后该 Cookie 即失效

  • 持久 Cookie 则会保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户登录状态

代理的基本原理

形象地说,它是网络信息的中转站。在我们正常请求一个网站时,是发送了请求给 Web 服务器,Web 服务器把响应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥

根据协议区分

  • FTP 代理服务器:主要用于访问 FTP 服务器,一般有上传、下载以及缓存功能,端口一般为 21、2121 等。
  • HTTP 代理服务器:主要用于访问网页,一般有内容过滤和缓存功能,端口一般为 80、8080、3128 等。
  • SSL/TLS 代理:主要用于访问加密网站,一般有 SSL 或 TLS 加密功能(最高支持 128 位加密强度),端口一般为 443。
  • RTSP 代理:主要用于访问 Real 流媒体服务器,一般有缓存功能,端口一般为 554。
  • Telnet 代理:主要用于 telnet 远程控制(黑客入侵计算机时常用于隐藏身份),端口一般为 23。
  • POP3/SMTP 代理:主要用于 POP3/SMTP 方式收发邮件,一般有缓存功能,端口一般为 110/25。
  • SOCKS 代理:只是单纯传递数据包,不关心具体协议和用法,所以速度快很多,一般有缓存功能,端口一般为 1080。SOCKS 代理协议又分为 SOCKS4 和 SOCKS5,前者只支持 TCP,而后者支持 TCP 和 UDP,还支持各种身份验证机制、服务器端域名解析等。简单来说,SOCK4 能做到的 SOCKS5 都可以做到,但 SOCKS5 能做到的 SOCK4 不一定能做到。

根据匿名程度区分

  • 高度匿名代理:会将数据包原封不动地转发,在服务端看来就好像真的是一个普通客户端在访问,而记录的 IP 是代理服务器的 IP。
  • 普通匿名代理:会在数据包上做一些改动,服务端上有可能发现这是个代理服务器,也有一定几率追查到客户端的真实 IP。代理服务器通常会加入的 HTTP 头有 HTTP_VIAHTTP_X_FORWARDED_FOR
  • 透明代理:不但改动了数据包,还会告诉服务器客户端的真实 IP。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。
  • 间谍代理:指组织或个人创建的用于记录用户传输的数据,然后进行研究、监控等目的的代理服务器。

常见代理设置

我自己用的是机场