当前位置: 首页 > 后端技术 > Python

03-Python爬虫基本原理

时间:2023-03-26 01:49:41 Python

爬虫是模拟用户在浏览器或应用程序上的操作,将操作过程自动化,实现程序当我们在浏览器中输入一个url,回车后,会发生什么的背景?比如你输入http://www.sina.com.cn/,简单来说,这个过程中发生了以下四个步骤:找到域名对应的IP地址。向该IP对应的服务器发送请求。服务器通过发回网页内容来响应请求。浏览器解析网页内容。网络爬虫的本质是浏览器发出http请求。浏览器和网络爬虫是两种不同的网络客户端,它们获取网页的方式都是一样的:网络爬虫要做的,简单来说就是实现浏览器的功能。通过指定url,直接返回用户需要的数据,无需手动操作浏览器一步步获取。浏览器如何发送和接收这些数据?HTTP简介HTTP协议(HyperTextTransferProtocol,超文本传输??协议)的目的是提供一种发布和接收HTML(超文本标记语言)页面的方法。HTTP协议所在的协议层(理解)HTTP是基于TCP协议的。TCP/IP协议参考模型各层对应的协议如下图所示,其中HTTP为应用层协议。HTTP默认端口号为80,HTTPS端口号为443。HTTP工作过程一个HTTP操作称为一个事务,整个工作过程如下:1)地址解析,比如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm从中分解协议Name,hostname,port,objectpath等。对于我们的地址,解析结果如下:Protocolname:httpHostname:localhost.com端口:8080对象路径:/index.htm这一步需要输入域名系统DNS解析域名localhost.com获取主机的IP地址。2)封装HTTP请求包将以上部分与机器本身的信息结合起来,封装成HTTP请求包3)封装成TCP包,建立TCP连接(TCP三次握手)。在HTTP工作开始之前,客户端(Web浏览器)首先要通过网络与服务器建立连接。通过TCP完成连接。该协议与IP协议共同构建了Internet,即著名的TCP/IP协议族,因此Internet又称为TCP/IP网络。HTTP是比TCP更高级的应用层协议。按照规则,只有下层协议建立后,才能建立上层协议的连接。因此,必须先建立TCP连接。一般TCP连接的端口号是80,这里是8080端口4)客户端发送建立连接的请求命令后,客户端向服务器发送请求。请求方法的格式为:统一资源标识符(URL)、协议版本号,后面是MIME信息,包括请求修饰符、客户端信息和可用内容。5)ServerResponse服务器收到请求后,会以状态行的形式给出相应的响应信息,包括信息的协议版本号、成功或错误代码,后面是MIME信息,包括服务器信息、实体信息和可能的内容。实体消息是服务器向浏览器发送头部信息后,会发送一个空行,表示头部信息的发送到此结束,然后将用户请求的实际内容按照描述的格式发送出去Content-Type响应头信息。数据6)服务器关闭TCP连接一般情况下,web服务器一旦向浏览器发送请求数据,就会关闭TCP连接,然后如果浏览器或服务器添加这行代码Connection:keep-aliveTCPconnection在它的头部信息发送后会保持打开状态,因此浏览器可以继续通过同一个连接发送请求。保持连接可以节省为每个请求建立新连接所需的时间,也可以节省网络带宽。HTTPSHTTPS(全称:HypertextTransferProtocoloverSecureSocketLayer)是一种以安全为目标的HTTP通道。简单来说,它是HTTP的安全版本。即在HTTP之下增加了SSL层,HTTPS的安全基础就是SSL。它使用的端口号是443。SSL:SecureSocketsLayer,是netscape设计的一种安全传输协议,主要用于web。该协议已广泛用于WEB。通过证书认证确保客户端与Web服务器之间的通信数据加密安全。加解密算法有两种基本类型:1)对称加密(symmetricencryption):只有一把密钥,加解密是同一个密码,加解密速度快。典型的对称加密算法有DES、AES、RC5、3DES等;对称加密的主要问题是共享密钥,除非你的计算机(客户端)知道另一台计算机(服务器)的私钥,否则通信流无法加密和解密。这个问题的解决方案是非对称密钥。2)非对称加密:使用两个密钥:公钥和私钥。私钥由一方(通常由服务器)密码保存,另一方的任何人都可以获得公钥。这种密钥成对出现(而且私钥不能从公钥推导出来,公钥不能从私钥推导出来),加密和解密使用不同的密钥(公钥加密需要私钥解密,私有密钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。https通信的优点:客户端生成的密钥只能由客户端和服务端获取;加密数据只能由客户端和服务器以明文形式获取;从客户端到服务器的通信是安全的。IT概论感谢您的关注|练习地址:www.520mg.com/it