python爬虫基础知识
1. 爬虫
通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。
- 爬虫使用场景中的分类:
- 通用爬虫:
抓取系统重要组成部分,抓取的是一整张页面数据。 - 聚焦爬虫:
建立在通用爬虫的基础之上,抓取的是页面中特定的局部内容。 - 增量式爬虫:
检测网站中数据更新的情况,只抓取网站中最新更新出来的数据。
- 通用爬虫:
2. 反爬机制(防止爬虫),反反爬机制(破解反爬机制)
- robots.txt协议:
君子协议,规定了网站中哪些数据可以被爬虫爬取,哪些数据不可以被爬取。
3. http协议
- 概念:
服务器和客户端进行数据交互的一种形式。
4. 常用请求头信息
- User-Agent:请求载体的身份标识。
- Connection:请求完毕后,是断开连接还是保持连接。
5. 常用响应头信息
- Content-Type:服务器响应回客户端的数据类型。
6. https协议
- 安全的超文本传输(https)协议:
7. 加密方式
-
对称秘钥加密:
客户端制定加密方式,进行加密。传递给服务器信息时,将加密后的密文和解密方式一同传输给服务器,服务器根据接收到的解密方式解密密文。
缺点:客户端传输信息给服务器时,若信息被拦截,则解密方式和密文就会都被获取。 -
非对称秘钥加密:
服务器端先设定加密方式,再将公钥(该加密方式)发送给客户端。客户端便会根据此公钥(该加密方式)对要发送的信息进行加密,传输数据时便传输此方式加密后的密文。服务器端收到密文后,便根据相对应的私钥进行解密。
优势:密文和公钥发放分离,降低了信息传输时被拦截后的泄密风险。缺点:加密方式效率低,影响通信速度;在传输公钥有被中间机构拦截的风险,若公钥被篡改,则会导致客户端拿到的是错误的公钥。
-
证书秘钥加密:
加入了证书认证机构角色。服务器端先制定加密方式(公钥),之后将公钥发送给证书认证机构进行审核,审核通过之后便会对该公钥进行数字签名(用于防伪),签名完后便将数字签名后的证书一并发送给客户端,客户端便会使用通过的证书即携带签名的公钥进行信息加密,加密完后将密文发送给服务器端。注:只有客户端拿到的公钥有数字签名和证书才认可该公钥,确认使用该公钥对密文进行加密。
8. requests模块
(1)urlib模块(老模块)
(2)requests模块
python中原生的一款基于网络请求的模块,功能非常强大,简单便捷,效率高。
-
作用:模拟浏览器发请求。
-
requests模块的编码流程:
- (1)指定URL
- (2)发起请求
- (3)获取响应数据
- (4)持久化存储
-
环境安装:
pip install requests
- 实战编码:
- 需求:爬取搜狗首页的页面数据
import requests
if __name__ == "__main__":
# 指定URL
url = 'https://www.sogou.com/'
# 发起请求
response = requests.get(url=url)
# 获取响应数据
page_text = response.text
print(page_text)
# 持久化存储
with open('./sogou.html','w',encoding='utf-8') as fp:
fp.write(page_text)
print('web crawler over!')