爬虫001----介绍以及可能需要使用的技术栈
首先1️⃣。。。全篇使用的技术栈当然是python了,毕竟作为一名点点点工程师,实际工作中做测试开发用的也是python,毕竟测试框架么,不需要什么"速度"。也会一点点cpp和js,但不多。什么?你说go和java?那只会用fmt和sout输出一下hello world,哈哈哈
PS:加了这么多批注,只是为了我自己看能方便些,还有我的个人想法和经验在里面,请叫我现代牛皮癣
1. 爬虫介绍
ChatGPTCV过来的。。。毕竟专业!!!我做不到这么好👌
爬虫(Web Crawler 或 Spider)是一个自动化程序,用于浏览互联网并提取信息。爬虫通过访问网页、解析内容和提取数据来实现数据收集,通常用于以下几个主要目的:
-
数据采集
爬虫可以从各种网站中自动提取信息。这种信息可以是产品价格、文本内容、图片、用户评论等,广泛应用于市场分析、研究和监控等领域。 -
搜索引擎索引
搜索引擎(如 Google、Bing)使用爬虫来抓取互联网上的网页,并将其内容索引,以便用户在搜索时能够快速找到相关信息。 -
竞争分析
企业或市场研究者可以使用爬虫监控竞争对手的价格、产品和市场活动,以制定更好的业务策略。 -
数据清洗和整理
爬虫可以提取原始数据并进行格式化,方便后续的数据分析和处理。 -
内容抓取
爬虫可以用于抓取特定网站的内容,进而进行二次开发,比如生成数据报告、创建数据集等。 -
社交媒体分析
爬虫可以从社交媒体平台提取数据,分析用户行为、趋势及舆情等。 -
监控网站变化
爬虫可以定期访问特定网站,监控内容的任何变化,比如价格变化、新闻更新等。
2. 技术栈
2.1 Python相关
2.1.1 python基础
这部分写个大概就直接pass了,默认我自己会python,毕竟是爬虫类博客----在小破站找课发现每一个课都会讲一下基础,我也给带上!!😘
- 语法,常量,变量,数据类型,运算符等
- 分支,循环等
- 数组,列表,元组,集合,字典等
- 函数,类,模块,库,面向对象(封装继承多态)等
- 异常,文件,匿名函数等
- 闭包,递归,装饰器,正则等
- 数据结构,算法等
2.1.2 网络请求库
重点开始了❗️,基础但很重要的玩意儿
- requests ---- 支持发送各种类型的请求(GET、POST等),并能够处理响应 ---- 常用库,个人觉得特别好用,做接口自动化也喜欢用这个库
- urllib ----- python标准库
- aiohttp ---- 异步 HTTP 客户端和服务器框架,使用 asyncio 实现,可以处理高并发的请求
2.1.3 网页解析库
- BS4 ---- 解析 HTML 和 XML 文档的库
- lxml ---- 解析和处理 XML 和 HTML 的库 ---- xpath专用,单从写xpath表达式的感觉来说,要比BS4舒服,个人觉得😌
- re ---- 正则库,用于匹配复杂文本
2.1.4 爬虫框架
- Scrapy ---- 支持分布式和异步
- PySider ---- 轻量级爬虫框架
- Crawlab ---- 支持可视化监控和管理
2.2 反爬技术
ChatGPT搜的,作为小白,目前接触到的最多的就是UA、cookie和Referer检查(验证码除外),不过有一次批量爬取豆瓣数据,IP被封禁了几个月😭
2.2.1 IP 封禁
描述: 当同一 IP 地址在短时间内发送过多请求时,网站会将其列入黑名单,拒绝其后续请求。
作用: 有效防止短时间内发送大量请求的爬虫。
2.2.2. 速率限制
描述: 服务器限制来自特定 IP 地址的请求速率,如每秒最多允许的请求次数。
作用: 通过限制请求频率,降低爬虫成功抓取数据的效率。
2.2.3. User-Agent 验证
描述: 网站会检查请求中的 User-Agent 字段,识别是否为浏览器或爬虫。常见的爬虫工具有特定的 User-Agent。
作用: 拒绝或屏蔽常见的爬虫 User-Agent,以防止自动化访问。
2.2.4. Cookie 验证
描述: 一些网站通过设置 Cookie 来跟踪用户,并要求用户在访问时带上特定的 Cookie。
作用: 只有正确设置了 Cookie 的请求才能通过,爬虫如果无法管理 Cookie,会受到限制。
2.2.5. 验证码(CAPTCHA)
描述: 通过要求用户完成验证码(如输入扭曲文字、选择图片等)来验证是否为人类用户。
作用: 有效阻止自动化程序的访问,因为爬虫通常无法通过这些验证。
2.2.6. JavaScript 渲染
描述: 一些网站使用 JavaScript 动态生成内容,只在用户的浏览器中渲染数据,而爬虫无法解析 JavaScript。
作用: 防止爬虫直接抓取静态 HTML。
2.2.7. 动态内容加载(AJAX)
描述: 使用 AJAX 技术异步加载数据,因此一开始加载的页面上没有完整的数据,这需要发送额外请求。
作用: 爬虫需要模拟这些请求才能获得完整数据,增加了抓取的复杂性。
2.2.8. 反序列化检测
描述: 网站会检测请求的结构与正常用户行为的差异,监控是否有异常的请求模式。
作用: 识别通过特殊方式反序列化请求的爬虫。
2.2.9. HTML 结构改变
描述: 频繁改变网站的 HTML 结构或 URL 规则,使得爬虫在抓取过程中常常无法获取到数据。
作用: 迫使爬虫不断更新爬取逻辑,增加维护成本。
2.2.10. IP 地理位置分析
描述: 根据访问者的 IP 地址分析其地理位置,如果请求来自不同的地区,可能会被限制。
作用: 限制数据访问到某些特定地区的爬虫。
2.2.11. 内容加密或动态内容
描述: 网站可能会将某些页面内容加密,或依赖于用户操作才能呈现的内容(如按钮点击后展示的数据)。
作用: 使得爬虫无法直接获取内容。
2.2.12. 请求伪造检测
描述: 通过比对请求的来源、原始地址、请求引用(Referer)等,来检测是否为伪造请求。
作用: 识别出那些不是通过正常入站线路访问的请求。
2.2.13. 页面行为监测
描述: 监测用户在页面上的行为(如鼠标移动、点击频率等),非真实用户的行为模式会触发监测。
作用: 识别出机器人行为并拦截相关请求。
2.2.14. IP 轮换检测
描述: 若大量请求来自不同 IP 但行为模式相似,服务器可能会将其视为爬虫行为检测。
作用: 通过行为模式识别抓取工具。
2.2.15. DNS 误导
描述: 通过将请求重定向到虚假的 DNS 地址,进而拦截请求。
作用: 直接影响爬虫的请求路径。
2.2.16. HTTP Referer 检查
描述: 检测请求中 Referer 字段,确保请求来自合法的网页来源。
作用:阻止爬虫通过直接请求 URL 而绕过正常的页面导航。
2.2.17. 实时监控和分析
描述: 利用工具和技术实时监控流量,分析异常模式并采取措施。
作用: 及时识别并阻止爬虫的攻击。
2.3 数据存储
2.3.1 文本文件
- Json
- Html
- Csv
- openxl
2.3.2 数据库
- Mysql
- SQLite
- MongoDB
- PyMysq库
2.4 数据处理
嗯。。。😯最好掌握一下,毕竟数据清洗也是必不可少的一个环节,实际工作中不光需要拿到数据就可以了,基本都要进行数据分析
2.4.1 Numpy
简介: NumPy 是一个用于科学计算的基础库,支持高性能的多维数组和矩阵操作。
特点:
- 提供强大的数组对象 N-dimensional array (ndarray)
- 支持数学函数和线性代数运算
2.4.2 Pandas
简介: Pandas 是一个强大的数据处理和分析库,特别适用于条件数据操作、数据清洗、统计分析等任务。
特点:
- 提供 DataFrame 和 Series 数据结构
- 支持数据读取(如 CSV、Excel)、数据清洗和转换
- 提供丰富的数据操作功能,如分组、合并、连接等
2.4.3 Excel表
想了想还是加了Excel,毕竟实际工作中说不定可能会使用Excel表分析展示数据,毕竟老板👵喜欢💗(比如我公司需求就是,测试工具处理数据后生成的测试报告都是要展示成Excel表形式反馈的)
不要小看Excel,就那些宏和函数,也够头疼的,玩好了也是大佬级别的存在🧍♂️
2.5 数据可视化
数据处理完了,就要展示给boss👵看了,当然,我工作中用的最多的还是Matplotlib,把折线趋势图往Excel表里一丢,测试报告,成了✅
2.5.1 Matplotlib
简介: Matplotlib 是一个基础的数据可视化库,支持生成多种类型的静态、动态、交互式图表。
特点:
- 灵活性高,支持自定义图表的各个方面
- 提供多种绘图类型(如折线图、散点图、柱状图等)
2.5.2 Seaborn
简介: Seaborn 是基于 Matplotlib 的高级可视化库,提供了更为美观和易用的图表。
特点:
- 对统计数据的可视化特别友好
- 提供内置的主题和颜色调色板
2.5.3 Plotly
简介: Plotly 是一个用于创建交互式图表的库,支持多种图形类型。
特点:
- 支持丰富的交互功能
- 可以生成 Web 图表并嵌入到 Web 应用中
2.6 图像识别
这个我。。。反正多学点不吃亏,之前用OCR技术识别验证码,可是Fail❎率挺高的,而且遇到稍微复杂一点点的验证码,比如说中间加了一条,就疯狂Fail!!!有人教唆我用Tensorflow训练一个验证码识别模型。。。但。。。我不会,哈哈哈,不管了,先挂上再说
对于点点点,最简单解决验证码方式就是 ---- 喂!来给俺把测试环境验证码先给注掉!俺要跑一遍自动化!
2.6.1 openCV
简介: OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,提供了多种图像处理和计算机视觉功能。
功能:
- 图像读取与写入
- 图像变换(平滑、滤波、边缘检测等)
- 特征检测(如 SIFT、SURF、ORB)
- 编写简单的图像处理脚本
2.6.2 Pillow
简介: Pillow 是 Python Imaging Library(PIL)的一个分支,提供图像处理工具,支持图像操作的简化。
功能:
- 图像打开、保存、裁剪、调整大小
- 图像滤镜和效果
- 处理图像的文本和矩形
2.6.3 TensorFlow 和 Keras
简介: TensorFlow 是一个开源的深度学习框架,而 Keras 是一个高层次的神经网络 API,能够与 TensorFlow 等后台框架一起使用。
功能:
- 训练和部署深度学习模型,尤其是卷积神经网络(CNN)
- 使用预训练模型进行迁移学习
- 支持图像分类、目标检测、图像生成等
2.6.4 PyTorch
简介: PyTorch 是一个流行的开源深度学习框架,较 TensorFlow 更加灵活,常用于研究和开发。
功能:
- 动态计算图,易于调试
- 支持 CNN 和其他深度学习结构
- 目标检测(如使用 torchvision)
2.6.5 Tesseract
简介: Tesseract 是一个开源的 OCR 引擎,能够从图像中提取文本。
功能:
- 处理各种语言的字符识别
- 支持图像预处理
2.7 网页自动化库
如果实在爬不到,只能上自动化工具来模拟了!!(这个我熟悉😌)
2.7.1 selenium
概述: Selenium 是一个广泛使用的自动化测试工具,最初是用于 Web 应用程序的测试。
优点:
- 支持多种浏览器(如 Chrome、Firefox、Safari 等)。
- 提供了丰富的 API 以控制浏览器,如鼠标点击、键盘输入等。
2.7.2 Playwright
概述: Playwright 是一个相对较新的工具,旨在提供更快、更强大的浏览器自动化功能。
优点:
- 支持最新的浏览器特性(如 WebKit、Chromium 和 Firefox)。
- 允许多浏览器上下文的支持,能模拟不同类型的用户会话。
- 更简洁和强大的 API,相较于 Selenium 使用上更为灵活。
爬虫总括先总结这么多,少了后续再补。当然,最重要的一点是:一定遵守robot君子协议!!(当然,我就说说,爬虫第一课肯定先把君子协议注释掉的,不然咋爬?爬不到啊!!)