本教程的知识点为:爬虫课程概要 爬虫基础 爬虫概述 知识点: 1. 爬虫的概念 requests模块 requests模块 知识点: 1. requests模块介绍 1.1 requests模块的作用: 数据提取概要 数据提取概述 知识点 1. 响应内容的分类 知识点:了解 响应内容的分类 Selenium课程概要 selenium的介绍 知识点: 1. selenium运行效果展示 1.1 chrome浏览器的运行效果 Selenium课程概要 selenium的其它使用方法 知识点: 1. selenium标签页的切换 知识点:掌握 selenium控制标签页的切换 反爬与反反爬 常见的反爬手段和解决思路 学习目标 1 服务器反爬的原因 2 服务器常反什么样的爬虫 反爬与反反爬 验证码处理 学习目标 1.图片验证码 2.图片识别引擎 反爬与反反爬 JS的解析 学习目标: 1 确定js的位置 1.1 观察按钮的绑定js事件 Mongodb数据库 介绍 内容 mongodb文档 mongodb的简单使用 Mongodb数据库 介绍 内容 mongodb文档 mongodb的聚合操作 Mongodb数据库 介绍 内容 mongodb文档 mongodb和python交互 scrapy爬虫框架 介绍 内容 scrapy官方文档 scrapy的入门使用 scrapy爬虫框架 介绍 内容 scrapy官方文档 scrapy管道的使用 scrapy爬虫框架 介绍 内容 scrapy官方文档 scrapy中间件的使用 scrapy爬虫框架 介绍 内容 scrapy官方文档 scrapy_redis原理分析并实现断点续爬以及分布式爬虫 scrapy爬虫框架 介绍 内容 scrapy官方文档 scrapy的日志信息与配置 利用appium抓取app中的信息 介绍 内容 appium环境安装 学习目标
全套笔记资料代码移步: 前往gitee仓库查看
感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~
全套教程部分目录:
部分文件图片:
爬虫课程概要
爬虫特点概要:
1.知识点碎片化
爬虫方向的知识点都是十分碎片化的,因为我们在写爬虫的时候会面对各种各样的网站,每个网站实现的技术都有相似,但是大多数时候还是有区别的,这也就要求我们根据不同的网站使用不通的应对手段,爬虫并不向我们在学习web阶段的时候要实现某一功能只需要按照套路就能够做出来,本阶段课程主要就是交给大家常用的一些网站爬取技术。
2.学习难度
爬虫的入门相对而言还是要比web简单,但是在后期,爬虫的难度要比web难,难在哪呢?在于爬虫工程师与网站的开发与运维人员的对抗,可能你写了一个网站的爬虫,结果该网站的运维人员发现之后添加了反爬措施,那么作为爬虫工程师就需要解决这个反爬。
3.学习特点
本阶段的课程并不像web阶段有一个完整的web项目进行学习,因为爬虫的特点,也就导致了我们的爬虫阶段课程是以某网站爬虫为讲解对象的,也就是一个技术点一个案例。
4.后续发展
相对于web主要掌握框架的使用,然后就是熟悉业务的单一方向,爬虫需要学生掌握的东西要更多,同学们在工作过程中可能根据工作需要涉及到更多从没有接触过的知识。
5.法律层面
目前而言,爬虫相关工作属于灰色地带,主要是目前国内现行法律对于爬虫的相关评判还没有一个明确的制度。
6.课件
课件可能存在bug,可能会定期更新,课件中的案例可能因为网站更新或者某些网络原因失效,那么同学们在做练习或者学习的时候可以自己找一些网站进行练习。
7.建议
好记性不如烂笔头,建议大家多找一些网站进行爬取练习。
爬虫基础
本阶段课程主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本阶段的课程我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。
爬虫概述
知识点:
-
了解 爬虫的概念
-
了解 爬虫的作用
-
了解 爬虫的分类
-
掌握 爬虫的流程
1. 爬虫的概念
模拟浏览器,发送请求,获取响应
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
- 原则上,只要是客户端(浏览器)能做的事情,爬虫都能够做
- 爬虫也只能获取客户端(浏览器)所展示出来的数据
知识点:了解 爬虫的概念
2. 爬虫的作用
爬虫在互联网世界中有很多的作用,比如:
-
[数据采集](
- [抓取微博评论](
- [抓取招聘网站的招聘信息](
- [新浪滚动新闻](
- [百度新闻网站](
-
[软件测试](
- [爬虫之自动化测试](
- [虫师](
-
[12306抢票](
-
网站上的投票
- [投票网](
-
网络安全
-
[短信轰炸](
- [注册页面1](
- [注册页面2](
- [注册页面3](
-
[web 扫描](
-
知识点:了解 爬虫的作用
3. 爬虫的分类
3.1 根据被爬取网站的数量不同,可以分为:
- 通用爬虫,如 搜索引擎
- 聚焦爬虫,如12306抢票,或专门抓取某一个(某一类)网站数据
3.2 根据是否以获取数据为目的,可以分为:
- 功能性爬虫,给你喜欢的明星投票、点赞
- 数据增量爬虫,比如招聘信息
3.3 根据url地址和对应的页面内容是否改变,数据增量爬虫可以分为:
-
基于url地址变化、内容也随之变化的数据增量爬虫
-
url地址不变、内容变化的数据增量爬虫
图片无法加载
知识点:了解 爬虫的分类
4. 爬虫的流程
爬虫的基本流程如图所示
图片无法加载
- 获取一个url
- 向url发送请求,并获取响应(需要http协议)
- 如果从响应中提取url,则继续发送请求获取响应
- 如果从响应中提取数据,则将数据进行保存
知识点:掌握 爬虫的流程
爬虫基础
本阶段课程主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本阶段的课程我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。
http协议复习
知识点
-
掌握 http以及https的概念和默认端口
-
掌握 爬虫关注的请求头和响应头
-
了解 常见的响应状态码
-
理解 浏览器和爬虫爬取的区别
一提起http协议,大家都会想起它是一个应用层协议,那么http协议跟爬虫有什么关系呢?请看下图:
图片无法加载
1. http以及https的概念和区别
HTTPS比HTTP更安全,但是性能更低
-
HTTP:超文本传输协议,默认端口号是80
- 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件
- 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
-
HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443
- SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
-
可以打开浏览器访问一个url,右键检查,点击net work,点选一个url,查看http协议的形式
知识点:掌握 http以及https的概念和默认端口
2. 爬虫特别关注的请求头和响应头
2.1 特别关注的请求头字段
图片无法加载
http请求的形式如上图所示,爬虫特别关注以下几个请求头字段
- Content-Type
- Host (主机和端口号)
- Connection (链接类型)
- Upgrade-Insecure-Requests (升级为HTTPS请求)
- User-Agent (浏览器名称)
- Referer (页面跳转处)
- Cookie (Cookie)
- Authorization(用于表示HTTP协议中需要认证资源的认证信息,如前边web课程中用于jwt认证)
加粗的请求头为常用请求头,在服务器被用来进行爬虫识别的频率最高,相较于其余的请求头更为重要,但是这里需要注意的是并不意味这其余的不重要,因为有的网站的运维或者开发人员可能剑走偏锋,会使用一些比较不常见的请求头来进行爬虫的甄别
2.2 特别关注的响应头字段
图片无法加载
http响应的形式如上图所示,爬虫只关注一个响应头字段
- Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)
知识点:掌握 爬虫关注的请求头和响应头
3. 常见的响应状态码
- 200:成功
- 302:跳转,新的url在响应的Location头中给出
- 303:浏览器对于POST的响应进行重定向至新的url
- 307:浏览器对于GET的响应重定向至新的url
- 403:资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限)
- 404:找不到该页面
- 500:服务器内部错误
- 503:服务器由于维护或者负载过重未能应答,在响应中可能可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码
我们在学习web知识的时候就已经学过了状态码的相关知识,我们知道这是服务器给我的相关反馈,我们在学习的时候就被教育说应该将真实情况反馈给客户端,但是在爬虫中,可能该站点的开发人员或者运维人员为了阻止数据被爬虫轻易获取,可能在状态码上做手脚,也就是说返回的状态码并不一定就是真实情况,比如:服务器已经识别出你是爬虫,但是为了让你疏忽大意,所以照样返回状态码200,但是响应体重并没有数据。
所有的状态码都不可信,一切以是否从抓包得到的响应中获取到数据为准
知识点:了解 常见的响应状态码
4. 浏览器的运行过程
在回顾完http协议后,我们来了解以下浏览器发送http请求的过程
图片无法加载
4.1 http请求的过程
- 浏览器在拿到域名对应的ip后,先向地址栏中的url发起请求,并获取响应
- 在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
- 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
- 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
4.2 注意:
但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,是因为爬虫不具备渲染的能力(当然后续课程中我们会借助其它工具或包来帮助爬虫对响应内容进行渲染)
- 浏览器最终展示的结果是由多个url地址分别发送的多次请求对应的多次响应共同渲染的结果
- 所以在爬虫中,需要以发送请求的一个url地址对应的响应为准来进行数据的提取
知识点:理解 浏览器展示的结果可以由多次请求对应的多次响应共同渲染出来,而爬虫是一次请求对应一个响应
5. 关于http协议的其它参考阅读
- [
- [
- [
- [
- [
- [
requests模块
本阶段课程主要学习requests这个http模块,该模块主要用于发送请求获取响应,该模块有很多的替代模块,比如说urllib模块,但是在工作中用的最多的还是requests模块,requests的代码简洁易懂,相对于臃肿的urllib模块,使用requests编写的爬虫代码将会更少,而且实现某一功能将会简单。因此建议大家掌握该模块的使用