Python爬虫2.基础
看的书《Python3 网络爬虫开发实战教程》学习笔记
URI和URL和URN
URI:Uniform Resource Identifier(统一资源标识符)
URL:Uniform Resource Location(统一资源定位符)
URN:Universal Resource Name(即统一资源名称)
URL和URN 是 URI 的子集
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 | <html> |
会话和 Cookies
静态网页和动态网页
静态网页
下面这个就是静态网页没有调用然后后端代码比如JSP、PHP、Python
1 | <html> |
动态网页
动态网页非常灵活多变
我们现在遇到的大多数网站都是动态网站,它们不再是一个简单的 HTML,而是可能由 JSP、PHP、Python 等语言编写的,其功能比静态网页强大和丰富太多了
无状态 HTTP
就是当我们向服务器发送请求后,服务器解析此请求,然后返回对应的响应, HTTP 协议对事务处理是没有记忆能力的,然后就出现了会话和 Cookies
会话
会话比如比如,打电话时,没有挂断电话这中间的一系列过程可以称为一个会话
而在 Web 中,会话对象用来存储特定用户会话所需的属性及配置信息,而这个用户保持到信息会在服务器一直保存下去
Cookies
Cookies 指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据。
会话 Cookie 和持久 Cookie
会话 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_VIA
和HTTP_X_FORWARDED_FOR
。 - 透明代理:不但改动了数据包,还会告诉服务器客户端的真实 IP。这种代理除了能用缓存技术提高浏览速度,能用内容过滤提高安全性之外,并无其他显著作用,最常见的例子是内网中的硬件防火墙。
- 间谍代理:指组织或个人创建的用于记录用户传输的数据,然后进行研究、监控等目的的代理服务器。
常见代理设置
我自己用的是机场