当前位置: 首页 > news >正文

爬虫001----介绍以及可能需要使用的技术栈

     首先1️⃣。。。全篇使用的技术栈当然是python了,毕竟作为一名点点点工程师,实际工作中做测试开发用的也是python,毕竟测试框架么,不需要什么"速度"。也会一点点cpp和js,但不多。什么?你说go和java?那只会用fmt和sout输出一下hello world,哈哈哈

PS:加了这么多批注,只是为了我自己看能方便些,还有我的个人想法和经验在里面,请叫我现代牛皮癣

1. 爬虫介绍

ChatGPTCV过来的。。。毕竟专业!!!我做不到这么好👌
爬虫(Web Crawler 或 Spider)是一个自动化程序,用于浏览互联网并提取信息。爬虫通过访问网页、解析内容和提取数据来实现数据收集,通常用于以下几个主要目的:

  1. 数据采集
    爬虫可以从各种网站中自动提取信息。这种信息可以是产品价格、文本内容、图片、用户评论等,广泛应用于市场分析、研究和监控等领域。

  2. 搜索引擎索引
    搜索引擎(如 Google、Bing)使用爬虫来抓取互联网上的网页,并将其内容索引,以便用户在搜索时能够快速找到相关信息。

  3. 竞争分析
    企业或市场研究者可以使用爬虫监控竞争对手的价格、产品和市场活动,以制定更好的业务策略。

  4. 数据清洗和整理
    爬虫可以提取原始数据并进行格式化,方便后续的数据分析和处理。

  5. 内容抓取
    爬虫可以用于抓取特定网站的内容,进而进行二次开发,比如生成数据报告、创建数据集等。

  6. 社交媒体分析
    爬虫可以从社交媒体平台提取数据,分析用户行为、趋势及舆情等。

  7. 监控网站变化
    爬虫可以定期访问特定网站,监控内容的任何变化,比如价格变化、新闻更新等。

2. 技术栈

2.1 Python相关

2.1.1 python基础

这部分写个大概就直接pass了,默认我自己会python,毕竟是爬虫类博客----在小破站找课发现每一个课都会讲一下基础,我也给带上!!😘

  1. 语法,常量,变量,数据类型,运算符等
  2. 分支,循环等
  3. 数组,列表,元组,集合,字典等
  4. 函数,类,模块,库,面向对象(封装继承多态)等
  5. 异常,文件,匿名函数等
  6. 闭包,递归,装饰器,正则等
  7. 数据结构,算法等

2.1.2 网络请求库

重点开始了❗️,基础但很重要的玩意儿

  1. requests ---- 支持发送各种类型的请求(GET、POST等),并能够处理响应 ---- 常用库,个人觉得特别好用,做接口自动化也喜欢用这个库
  2. urllib ----- python标准库
  3. aiohttp ---- 异步 HTTP 客户端和服务器框架,使用 asyncio 实现,可以处理高并发的请求

2.1.3 网页解析库

  1. BS4 ---- 解析 HTML 和 XML 文档的库
  2. lxml ---- 解析和处理 XML 和 HTML 的库 ---- xpath专用,单从写xpath表达式的感觉来说,要比BS4舒服,个人觉得😌
  3. re ---- 正则库,用于匹配复杂文本

2.1.4 爬虫框架

  1. Scrapy ---- 支持分布式和异步
  2. PySider ---- 轻量级爬虫框架
  3. 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 文本文件

  1. Json
  2. Html
  3. Csv
  4. openxl

2.3.2 数据库

  1. Mysql
  2. SQLite
  3. MongoDB
  4. PyMysq库

2.4 数据处理

嗯。。。😯最好掌握一下,毕竟数据清洗也是必不可少的一个环节,实际工作中不光需要拿到数据就可以了,基本都要进行数据分析

2.4.1 Numpy

简介: NumPy 是一个用于科学计算的基础库,支持高性能的多维数组和矩阵操作。
特点:

  1. 提供强大的数组对象 N-dimensional array (ndarray)
  2. 支持数学函数和线性代数运算

2.4.2 Pandas

简介: Pandas 是一个强大的数据处理和分析库,特别适用于条件数据操作、数据清洗、统计分析等任务。
特点:

  1. 提供 DataFrame 和 Series 数据结构
  2. 支持数据读取(如 CSV、Excel)、数据清洗和转换
  3. 提供丰富的数据操作功能,如分组、合并、连接等

2.4.3 Excel表

想了想还是加了Excel,毕竟实际工作中说不定可能会使用Excel表分析展示数据,毕竟老板👵喜欢💗(比如我公司需求就是,测试工具处理数据后生成的测试报告都是要展示成Excel表形式反馈的)

不要小看Excel,就那些宏和函数,也够头疼的,玩好了也是大佬级别的存在🧍‍♂️

2.5 数据可视化

数据处理完了,就要展示给boss👵看了,当然,我工作中用的最多的还是Matplotlib,把折线趋势图往Excel表里一丢,测试报告,成了✅

2.5.1 Matplotlib

简介: Matplotlib 是一个基础的数据可视化库,支持生成多种类型的静态、动态、交互式图表。
特点:

  1. 灵活性高,支持自定义图表的各个方面
  2. 提供多种绘图类型(如折线图、散点图、柱状图等)

2.5.2 Seaborn

简介: Seaborn 是基于 Matplotlib 的高级可视化库,提供了更为美观和易用的图表。
特点:

  1. 对统计数据的可视化特别友好
  2. 提供内置的主题和颜色调色板

2.5.3 Plotly

简介: Plotly 是一个用于创建交互式图表的库,支持多种图形类型。
特点:

  1. 支持丰富的交互功能
  2. 可以生成 Web 图表并嵌入到 Web 应用中

2.6 图像识别

这个我。。。反正多学点不吃亏,之前用OCR技术识别验证码,可是Fail❎率挺高的,而且遇到稍微复杂一点点的验证码,比如说中间加了一条,就疯狂Fail!!!有人教唆我用Tensorflow训练一个验证码识别模型。。。但。。。我不会,哈哈哈,不管了,先挂上再说

对于点点点,最简单解决验证码方式就是 ---- 喂!来给俺把测试环境验证码先给注掉!俺要跑一遍自动化!

2.6.1 openCV

简介: OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,提供了多种图像处理和计算机视觉功能。
功能:

  1. 图像读取与写入
  2. 图像变换(平滑、滤波、边缘检测等)
  3. 特征检测(如 SIFT、SURF、ORB)
  4. 编写简单的图像处理脚本

2.6.2 Pillow

简介: Pillow 是 Python Imaging Library(PIL)的一个分支,提供图像处理工具,支持图像操作的简化。
功能:

  1. 图像打开、保存、裁剪、调整大小
  2. 图像滤镜和效果
  3. 处理图像的文本和矩形

2.6.3 TensorFlow 和 Keras

简介: TensorFlow 是一个开源的深度学习框架,而 Keras 是一个高层次的神经网络 API,能够与 TensorFlow 等后台框架一起使用。
功能:

  1. 训练和部署深度学习模型,尤其是卷积神经网络(CNN)
  2. 使用预训练模型进行迁移学习
  3. 支持图像分类、目标检测、图像生成等

2.6.4 PyTorch

简介: PyTorch 是一个流行的开源深度学习框架,较 TensorFlow 更加灵活,常用于研究和开发。
功能:

  1. 动态计算图,易于调试
  2. 支持 CNN 和其他深度学习结构
  3. 目标检测(如使用 torchvision)

2.6.5 Tesseract

简介: Tesseract 是一个开源的 OCR 引擎,能够从图像中提取文本。
功能:

  1. 处理各种语言的字符识别
  2. 支持图像预处理

2.7 网页自动化库

如果实在爬不到,只能上自动化工具来模拟了!!(这个我熟悉😌)

2.7.1 selenium

概述: Selenium 是一个广泛使用的自动化测试工具,最初是用于 Web 应用程序的测试。
优点:

  1. 支持多种浏览器(如 Chrome、Firefox、Safari 等)。
  2. 提供了丰富的 API 以控制浏览器,如鼠标点击、键盘输入等。

2.7.2 Playwright

概述: Playwright 是一个相对较新的工具,旨在提供更快、更强大的浏览器自动化功能。
优点:

  1. 支持最新的浏览器特性(如 WebKit、Chromium 和 Firefox)。
  2. 允许多浏览器上下文的支持,能模拟不同类型的用户会话。
  3. 更简洁和强大的 API,相较于 Selenium 使用上更为灵活。

爬虫总括先总结这么多,少了后续再补。当然,最重要的一点是:一定遵守robot君子协议!!(当然,我就说说,爬虫第一课肯定先把君子协议注释掉的,不然咋爬?爬不到啊!!)

http://www.lqws.cn/news/481213.html

相关文章:

  • multiprocessing.pool和multiprocessing.Process
  • 深入剖析AI大模型:关于LlamaIndex知识管理与信息检索应用
  • Python爬虫实战:研究Spynner相关技术
  • 【系统分析师】2018年真题:论文及解题思路
  • Java中栈的实现---Stack、Deque、自定义实现
  • C/C++数据结构之静态数组
  • Excel学习02
  • Gartner金融AI应用机会雷达-学习心得
  • 十、关系数据库设计理论(二)
  • Element表格表头合并技巧
  • js 函数参数赋值问题
  • (码云gitee)IDEA新项目自动创建gitee仓库并直接提交
  • uv功能介绍和完整使用示例总结
  • 目标检测neck算法之MPCA和FSA的源码实现
  • vscode+react+ESLint解决不引入组件,vscode不会报错的问题
  • 分库分表技术栈讲解-Sharding-JDBC
  • Java中进程间通信(IPC)的7种主要方式及原理剖析
  • 通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》
  • Shell参数扩展语法解析
  • 量化-因子处理
  • 3D制作角色模型的教程-1
  • 支付宝携手HarmonyOS SDK实况窗,开启便捷停车生活
  • 【unitrix】 4.1 类型级加一操作(Add1.rs)
  • leetcode:面试题 08.06. 汉诺塔问题
  • 一次使用 RAFT 和 Qwen3 实现端到端领域RAG自适应
  • 如何仅用AI开发完整的小程序<4>—小程序页面创建与删除
  • 肖臻《区块链技术与应用》第六讲:比特币网络
  • Python 使用Gitlab Api
  • Javaweb - 4.1 JavaScript
  • (线性代数最小二乘问题)Normal Equation(正规方程)