认识爬虫技术

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

相关文章

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3