认识爬虫技术

2024-09-05 08:36
文章标签 技术 认识 爬虫

本文主要是介绍认识爬虫技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

爬虫目的

网络爬虫,主要目的是代替人工收集网络数据。

应用场景主要包括两个方面:

  • 网页收集的数据量少,但重复操作频率高;

  • 通过网页搜集数据的量大。

只要满足以上两个应用场景,其实都可以考虑使用爬虫技术降低人工成本。

爬虫技术

爬虫的本质,就是模拟人的操作,把网页下载下来,然后通过网页内容找到目标数据。

主要可以分为两个步骤:

  1. 下载目标网页

  2. 找到目标数据

第 2 步的操作,就是从已有的网页文本内容中,找到目标目标数据。

这个相对而言,是比较简单的,利用正则匹配 或者是 HTML DOM 结构解析查询都能够比较容易实现目的。

但一般提到的爬虫技术,其实是针对如何下载目标网页的技术。

没经验的朋友可能觉得下载网页很简单,直接一个 GET 域名请求,就可以拿到网页数据。

本质上确实就是这么简单,但复杂点在于:

几乎每一个有内容、数据的网站,都会有一套自己的反爬虫策略。

所以,在有爬取目标的情况下,我们就需要具体测试出来的这个网站的反爬虫策略。

这个 测试、验证、解决反爬虫机制的过程,其实就是所谓的爬虫技术

反爬虫/爬虫策略

常见的反爬虫策略主要有以下 6 个方向的考虑:

1. 动态页面结构

  • 定期更改页面结构

    • 反爬虫策略:通过定期更改网站的页面结构、标签、关键数据对应的标签属性,这样可以使爬虫难以长期有效地抓取网站。

    • 爬虫策略:这种方式基本无解,爬虫必须跟随目标网站重新适配爬虫的页面解析逻辑。

  • 动态加载内容

    • 反爬虫策略:使用 JavaScript 动态加载内容,使静态爬虫无法抓取到完整的页面信息。

    • 爬虫策略:使用 JavaScript 去触发动态加载内容或者用类似于 Python 的 Selenium 模拟人的操作。

2. 内容混淆和加密

  • 数据加密

    • 反爬虫策略:将关键数据进行加密,增加爬虫解析的难度。

    • 爬虫策略:如果要爬取的数据是加密后的结果,除非是知道解密方式和密钥,否则没办法。

  • 图片化关键信息

    • 发爬虫策略:将一些关键信息(如价格,电话号码等)转化为图片,这样可以防止简单的文本爬虫抓取这些信息。

    • 爬虫策略:通过 OCR 等技术识别出来图片信息。

3. 隐藏和混淆链接

  • 链接混淆

    • 反爬虫策略:对网站内的链接进行混淆,使得爬虫难以识别和跟踪链接。

    • 爬虫策略:这种情况只能观察已有混淆的链接和网站真实链接有什么样的关系,进行猜测和验证 。

  • 使用JavaScript生成链接

    • 反爬虫策略:使用 JavaScript 动态生成链接,可以防止静态爬虫抓取链接。

    • 爬虫策略:使用 JavaScript 去触发动态加载内容或者用类似于 Python 的 Selenium 模拟人的操作加载出来对应的链接信息。

4. 增加验证和检测机制

  • 验证码验证

    • 反爬虫策略:在关键页面增加验证码验证,可以有效防止自动化的爬虫访问。

    • 爬虫策略:简单文字字母验证码可以通过 OCR,但复杂验证码基本无解。

  • 行为检测

    • 反爬虫策略:通过检测用户行为(如鼠标移动,点击等)来识别和阻止自动化的爬虫。

    • 爬虫策略:这种可以通过类似于 Python 的 Selenium 模拟人的操作解决。

5. 服务端限制和监控

  • 访问请求头检查:

    • 反爬虫策略:检查 HTTP 请求的 User-Agent、Cookie、及其他请求头信息的有效性。

    • 爬虫策略:模拟或直接使用网站网络请求的 UA 、Cookie 及请求头信息。

  • 访问频率限制

    • 反爬虫策略:通过限制单一 IP 或用户的访问频率,可以防止爬虫的大量访问。

    • 爬虫策略:用动态的代理 IP 解决单一 IP 问题

  • 用户代理检测

    • 反爬虫策略:检测和限制使用已知的爬虫用户代理的访问。

    • 爬虫策略:用更多的动态代理 IP,遇到被禁的 IP 直接再换一个。

6. 合法及法律方面的考虑

  • 法律法规

    • 反爬虫策略:清楚标示网站的使用条款,明确禁止非法爬虫的行为。

    • 爬虫策略:不要公开使用和展示,仅限于方便自家数据的流转和使用。

  • 维权行动

    • 反爬虫策略:在检测到非法爬虫时,可以考虑通过法律手段来保护网站的数据和资源。

    • 爬虫策略:如果被人发律师函,被举报,则自求多福~

在用法律维权前,现在常见的做法都是通过服务端限制和监控,检查 User-Agent、Cookie、Ip 的方式做反爬虫的处理,毕竟,不管怎么爬取,最后都得请求目标网站的服务器,所以直接检查你的服务请求活动是否异常就可以。

所以,一般爬虫主要用 动态UA+动态Cookie+动态IP代理 执行 HTTP 请求就够了。

动态 IP 代理

动态 UA、动态 Cookie 都可以自己任意组装生成,这部分没有难度。

大部分人遇到的问题,主要是获取动态 IP 代理

这个问题,本质上是一个资源限制问题。

我们都知道,能在互联网上公开进行网络访问的 IP 地址,都是需要由合法的 IP 地址机构分配得到,并且全球唯一。

普通人肯定是拿不到很多的公网 IP 地址,居民楼一般一栋楼也就的一个公网 IP 而已。

遇到根据 IP 的反爬虫策略,要么被禁止,要么只能以普通人访问的速度爬取网页,且还不能过于规律。

如果爬取的场景,不要求频率很高,不要求多个地区节点进行访问,那单个 IP 也问题不大,每次爬取的时间间隔长一点就行。

但如果爬取的场景,要求频率 或者 要求不同区域节点访问,那这种情况,就只能找合适的代理 IP。

代理 IP,有很多现成的服务商。

但这种 IP 代理服务的价格都不低,收费模式也多样化,包括:

  • 按获取的代理 IP 个数收费

  • 按租用 IP 代理的时长收费

  • 按经过 IP 代理的流量收费

我了解到的按流量收费价格,最高的 80 元/GB,最低的也要 10 元/GB。

所以,在考虑爬虫开发时,除了人工时长成本,还要考虑到动态 IP 代理的费用。

免费 IP 代理池开源项目

互联网上,有一些平台会分享一些免费的 IP 代理。

但很少,很多人用。

Github 上有一些项目,是专门收集这种可免费使用的 IP 代理数据。

  • scrapy-proxies:用于 Scrapy 的中间件,用于设置代理 IP。
  • proxybroker:可以找到和检查代理的 Python 包,项目地址是。

  • gimmeproxy-api:提供免费代理的 API。

  • free-proxy这是一个可以从多个网站收集免费代理的 Python 脚本。

  • proxy-pool:这是一个 Python 编写的代理池项目,可以自动爬取和验证代理。

这篇关于认识爬虫技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138455

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时