什么是爬虫
简而言之
爬虫就是通过编写程序,模拟互联网发送请求,然后让其去抓取通过互联网返回的数据
爬虫在使用场景的分类
- 通用爬虫
- 抓取网站重要的信息,通常抓取的是一整张页面
- 聚焦爬虫
- 建立在通用爬虫上,是聚焦在某一点进行数据抓取
- 增量式爬虫
- 检测网站中更新出来的数据,只会抓取最新的数据
反爬机制
- 门户网站,可以制定相应的策略和相关技术手段来防止爬虫程序进行网站的数据获取
反反爬机制
- 通过制定某些策略和相应技术手段进行破解网站的反爬,来进行一个数据的获取
robots.txt协议
规定了网站上什么内容可以进行爬取,也称作君子协议(就是可以不遵守,那就变成小人啦) !!可能会犯法哦
查看该协议也很简单
- 在你输入网址的首页加上
robots.txt
就行了
http、https
百度百科
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面
http
概念
- 就是服务器和客户端进行数据交互的一种形式
常用请求头信息
- User-Agent : 请求载体的身份标识
- Connection: 请求完毕后,是断开连接还是保持连接
常用响应头信息
- Content-Type :服务器响应回客户端的数据类型
https
表示安全的超文本传输协议
- 数据加密
加密方式
- 对称秘钥加密
- 在传输给服务端时传输一个密文和秘钥,服务端接收后可以使用秘钥将密文打开,但是可能会被第三方拦截获取进行破解
- 非对称秘钥加密
- ·由服务端给客户端先传递一个公钥来进行密文的加密,然后再将密文发给服务端,由服务端的私钥进行解密,但是还是可能会被拦截修改
- 证书秘钥加密(https 加密方式)
- 和非对称类似,只是在公钥上进行了一个证书认证机构的签名,客户端收到带有这个签名的公钥就证明这个公钥是从服务端传过来的
Requests模块
官方定义
Python 内置了 requests 模块,该模块主要用来发 送 HTTP 请求,requests 模块比 urllib 模块更简洁
使用流程:
- 指定一个url地址
- 发起http请求
- 获取响应数据
- 持久化存储响应数据
第一个爬虫程序
进行搜狗主页爬取
# -*- encoding: utf-8 -*-
'''
@File : sougou.py
@Time : 2022/08/03 12:26:10
@Author : linyx
@Contact : 1710175673@qq.com
@Software: VSCode
'''
# here put the import lib
import requests
if __name__ == '__main__':
# 指定url
url = 'https://www.sogou.com/'
#发起请求 GET 返回一个响应对象
response = requests.get(url=url)
# 获取响应数据 以字符串的形式返回
page = response.text
#持久化存储
with open('./sougou.html','w',encoding='utf-8') as fp:
fp.write(page)
print('爬取数据成功')