01、python_爬虫的相关概念

news2024/12/23 13:39:43

一、什么是爬虫?

爬虫是网络爬虫的简称,指的是一种自动化程序,用于在互联网上抓取信息。爬虫的核心工作包括爬取网页、解析数据和存储数据。

通俗来说就是:通过一个程序,根据url(http://taobao.com)进行爬取网页,获取有用信息。或者使用程序模拟浏览器,去向服务器发送请求,获取响应信息。

二、爬虫的核心

在这里插入图片描述

1、爬取网页

爬虫需要获取网络上的数据来进行后续的处理,这个过程被称为“爬取”。在实际的操作中,通常使用 HTTP 协议进行数据交换。爬虫通过向目标服务器发送 HTTP 请求,并解析返回的 HTML 数据来获得所需的信息。在这个过程中,爬虫需要考虑到以下问题:

●安全性:爬虫需要尽可能地避免对目标服务器造成不必要的负担,因此需要进行合理的请求频率控制。
●可靠性:由于网络环境的不稳定性,爬虫需要具有重试机制以保证数据的完整性和可靠性。
●速度优化:爬虫需要适当地选择请求方式,以及优化请求参数和请求体等内容,以提高爬取效率。

2、解析数据

爬虫获取到的数据通常并不是直接可用的信息,需要进行解析和清洗。数据解析是将爬取到的 HTML 数据转换为可用数据的过程。解析数据时需要解决以下的难点:

●数据格式:HTML中包含了大量的标签和属性信息,需要对其进行解析和提取,转换成可用的数据格式。
●数据清洗:爬虫获取到的数据中可能包含无用的信息、空白字符等,需要进行清洗和处理。
●编码问题:由于不同网站使用的编码方式不同,因此在进行数据解析时需要考虑编码问题。

3、爬虫与反爬虫之间的博弈

爬虫和反爬虫是一种典型的博弈关系。反爬虫指的是针对爬虫的防御机制,旨在保护数据安全和私密性。常见的反爬虫技术包括:

●代理:使用代理 IP 来隐藏真实 IP 地址,以免被封禁。
●伪装User-Agent:通过改变请求头中的User-Agent字段,模拟浏览器发送请求,以绕过User-Agent识别。
●分布式爬取:将任务分散给多个爬虫节点,降低单个IP被封禁的风险。
●解析JavaScript:针对动态页面,使用Selenium等工具解析JavaScript。

针对这些反爬虫技术,爬虫需要采用相应的策略来规避或者绕过防御措施,例如:

对应措施:

●使用代理:使用代理 IP 来隐藏真实 IP 地址,以免被封禁。
●伪装User-Agent:通过改变请求头中的User-Agent字段,模拟浏览器发送请求,以绕过User-Agent识别。
●分布式爬取:将任务分散给多个爬虫节点,降低单个IP被封禁的风险。
●解析JavaScript:针对动态页面,使用Selenium等工具解析JavaScript。

三、爬虫的用途

网络爬虫被广泛应用于以下几个领域:数据挖掘、搜索引擎、舆情监测、电商数据爬取、资源收集。
在这里插入图片描述

四、爬虫的分类

在爬虫的分类中,通用爬虫和聚焦爬虫是两种广泛应用的爬虫类型

1、通用爬虫:

通用爬虫(也称为全网爬虫)是一种能够自动化地抓取互联网上所有可访问的网页的爬虫。它会从一个起始点开始,通过不断地跟踪链接、解析 HTML 等方式,遍历整个互联网,获取尽可能多的信息。

优点:

能够收集大量的数据,但同时也存在着一些问题。首先,通用爬虫需要很长时间才能完成任务,因为它需要遍历整个互联网。其次,由于互联网上存在大量的非常规页面、重定向页面等,通用爬虫可能会受到反爬虫机制的限制

2、聚焦爬虫

聚焦爬虫(也称为增量式爬虫)是一种只抓取特定内容的爬虫。与通用爬虫不同,聚焦爬虫通过设定爬取目标、规则等方式,有针对性地抓取满足规则的内容。这样可以节省时间和计算资源,提高效率。

优点

它能够更快地获取所需的信息,并且不容易受到反爬虫机制的限制。但是,由于聚焦爬虫只针对特定内容进行抓取,可能会遗漏一些与目标相关的信息

3、区别:

两者区别爬取的范围和方式不同。通用爬虫旨在遍历整个互联网,通过自动化的方式收集尽可能多的信息。而聚焦爬虫则更加关注特定内容,只针对符合规则的网页进行抓取

此外,通用爬虫需要存储所有爬取到的数据,因此需要更多的存储空间和计算资源。而聚焦爬虫只需要针对性地抓取目标内容,可以节省很多计算和存储资源

五、robots协议

Robots协议是一种基于文本的协议,用于指示网络爬虫哪些页面可以访问、哪些页面不能访问。它是由网站管理员在网站根目录下创建名为 robots.txt 的文件,并在其中编制一系列规则。通过识别此文件中的规则,网络爬虫就可以遵循这些规则来访问网站。

Robots协议有以下几个重要部分:

1、User-agent
User-agent是指爬虫的名称或标识符。当爬虫访问网站时,它会向服务器发送一个包含自己标识符的请求头,网站服务器就可以根据这个标识符来区分爬虫和真实用户。

2、Disallow
Disallow是指禁止访问的URL列表。如果某个URL被列在了Disallow列表中,那么爬虫就不应该访问这个URL。值得注意的是,Disallow列表只适用于相对路径,而不适用于绝对路径。

3、Allow
Allow是指允许访问的URL列表。如果某个URL被列在了Allow列表中,那么爬虫可以访问这个URL和Disallow一样,Allow也只适用于相对路径。

4、Sitemap
Sitemap是指网站地图的URL地址。它提供了一个包含所有页面的列表,可以帮助爬虫更快地发现网站的内容。

Robots协议的作用在于保护网站的隐私和安全,同时也可以控制网络爬虫对网站访问的范围。通过设置Robots协议,网站管理员可以防止爬虫访问敏感信息、减轻服务器负担等。但是,需要注意的是,Robots协议并不能防止所有的网络爬虫,只有那些遵循协议规则的爬虫才会受到限制。

总之,Robots协议是一种基于文本的协议,用于指示网络爬虫哪些页面可以访问、哪些页面不能访问。它是网站管理员维护网站安全和隐私的重要工具,同时也可以控制网络爬虫的访问范围。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1498727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第九届多媒体系统和信号处理国际会议(ICMSSP 2024)即将召开!

2024年第九届多媒体系统和信号处理国际会议(ICMSSP 2024)将在5月24-26日在泰国曼谷举行。ICMSSP 2024旨在展示多媒体系统和信号处理等相关主题的最新研究和成果,为不同领域的专家代表提供了面对面交流新想法以及应用经验的机会,建…

从零搭建React18.2+ReactRoute6.22+TS5+RTK2.2搭配antd5+antd-style书写All in Js完整体验项目规范

1. 使用CRA创建项目 全局设置npm淘宝镜像源 npm config set registry https://registry.npmmirror.com -g使用最新版create-react-app初始化项目结构 npx create-react-app custom-template --template typescript初始化项目之后在package.json文件中配置使用node>18.0.0…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:CalendarPicker)

日历选择器组件,提供下拉日历弹窗,可以让用户选择日期。 说明: 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 CalendarPicker(options?: CalendarOptions) …

构建读写分离的数据库集群

目录 1. 基础环境配置 (1)修改主机名 (2)编辑hosts文件 (3)配置Yum安装源 (4)安装JDK环境 2. 部署MariaDB主从数据库集群服务 (1)安装MariaDB服务 &a…

用readproc函数读取进程的状态

概要&#xff1a; 本篇演示用readproc函数读取进程的状态 libprocps库的安装参考笔者的文章readproc.h-CSDN博客 演示所用的系统是Ubuntu22.04 一、代码 #include<stdio.h> #include<stdlib.h> #include<proc/readproc.h> int main() {struct PROCTAB *…

清空 Redis 中所有的 key value

我们先登录 redis 服务 然后 输入 keys *这样 就可以查询到内部所有的key 然后 执行 FLUSHDB清空全部键值对 这里 OK后 我们重写查询 keys *显然 数据就被清空了

Redis几大数据类型

使用场景&#xff1a; Redis 数据类型及应用场景https://segmentfault.com/a/1190000012212663 Redis的五种常用数据类型在实际应用中有丰富的使用场景&#xff1a; 字符串&#xff08;String&#xff09; 缓存&#xff1a;存储经常查询但不频繁修改的数据&#xff0c;如网页…

java-新手笔记-(File篇)

1.File File类提供了许多方法来操作文件和目录&#xff0c;包括创建、查找、删除文件等 file常见功能 1.增 创建文件 exits() 判断文件是否存在 createNewFile() 创建新文件 二个搭配一起.判断文件是否存在来创建文件(需要使用try/catch处理异常情况) File file new File(&…

Java 学习和实践笔记(30):继承树的追溯

如上图所示&#xff0c;在上图中&#xff0c; 在最下面的子类Husky(哈士奇&#xff09;中&#xff0c;假定要查找一个变量或者方法h, 那么其查找顺序属性/方法查找顺序是这样的&#xff1a; 首先&#xff0c;查找当前类中有没有属性h 如果没有&#xff0c;则依次往上上溯每个…

SkyEye:助力飞行器状态控制系统仿真

飞行器与常见的航天器一样&#xff0c;属于安全关键领域的大型复杂设备&#xff0c;对安全性、可靠性有着极高的要求。为保证稳定飞行&#xff0c;需要对目标对象进行实时跟踪&#xff0c;通过发出正确的修正偏差指令来操纵飞行器改变飞行姿态&#xff0c;因此对飞行器状态控制…

[Buuctf] [MRCTF2020] Xor

运行 1.查壳 32位exe文件&#xff0c;没有壳 2.用32位IDA打开 找到main函数&#xff0c;F5查看伪代码&#xff0c;但是这里会弹出一个窗口 函数分析失败&#xff01;&#xff01; 这里我在看别人的题解时发现一种玄学方式解决了这个问题 窗口里面弹出了一个地址401095&…

2024年1月京东牛奶乳品行业分析:TOP10品牌销量及销额排行榜

鲸参谋监测的京东平台1月份牛奶乳品市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台显示&#xff0c;今年1月份&#xff0c;京东平台上牛奶乳品的销量约1600万件&#xff0c;环比上个月增长87%&#xff0c;同比去年下滑16%&#xff1b;销售额约12亿元&#xff0c;…

部署SpringBoot项目

方案一&#xff1a;纯手工部署 1&#xff0c;购买一台云服务器 这里我使用腾讯云&#xff0c;推荐Centos8/Centos7.6 2&#xff0c;安装springBoot项目所需要的环境 1&#xff0c;数据库单独安装在另一台服务器上&#xff0c;只需要修改IP地址即可 2&#xff0c;安装jdk yum…

MyBatis的#{}和${}:安全与灵活并存的SQL之道

MyBatis的#{}和${}&#xff1a;安全与灵活并存的SQL之道 MyBatis是一款广泛使用的Java持久化框架&#xff0c;提供了强大的SQL映射和数据库操作功能。在编写MyBatis的SQL语句时&#xff0c;我们经常会遇到#{}和${}两种不同的占位符语法。本文将详细解析#{}和${}的区别以及它们在…

微信小程序uniapp+django+python的酒店民宿预订系统ea9i3

Android的民宿预订系统设计的目的是为用户提供民宿客房、公告信息等方面的平台。 与PC端应用程序相比&#xff0c;Android的民宿预订系统的设计主要面向于民宿&#xff0c;旨在为管理员和用户、商家提供一个Android的民宿预订系统。用户可以通过Android及时查看民宿客房等。 An…

appium解锁android真机系统的屏幕

在使用appium进行app自动化操作的过程中&#xff0c;经常遇到的第一个难题就是如何解锁系统屏幕&#xff0c;也就是亮屏解锁。 实际上解决办法如下&#xff1a;在desired_capabilities中增加两个参数unlockType和unlockKey&#xff0c;类似的示例代码如下&#xff1a; desire…

blast原理与使用技巧,最全最详细

BLAST 序列比对 在生物信息学领域&#xff0c;序列比对是一项基础而关键的任务。它帮助研究人员识别基因、理解蛋白质功能&#xff0c;并揭示物种之间的进化关系。 本文旨在介绍BLAST&#xff08;Basic Local Alignment Search Tool&#xff09;的原理及其不同变体&#xff0c;…

支小蜜校园防欺凌报警系统如何识别霸凌

校园霸凌给受害者带来了深重的心理和身体伤害。为了有效应对这一问题&#xff0c;校园防欺凌报警系统应运而生&#xff0c;其核心技术在于如何准确、迅速地识别霸凌行为。那么校园防欺凌报警系统是如何识别霸凌的呢&#xff1f; 图像识别技术 这些系统利用高清摄像头捕捉校园…

部署运维 防火墙,进程 常用命令

防火墙: 1. 查看是否安装了firewalld sudo systemctl status firewalld 查看防火墙状态或者sudo systemctl is-active firewalld 查看防火墙是否是开启状态 2. 开放6379port sudo firewall-cmd --add-port6379/tcp --permanent 刷新防火墙 sudo firewall-cmd --reload 3…

Go-Gin-example 第五部分 加入swagger

上一节链接 swagger 为什么要用swagger 问题起源于 前后端分离&#xff0c; 后端&#xff1a;后端控制层&#xff0c;服务层&#xff0c;数据访问层【后端团队】前端&#xff1a;前端控制层&#xff0c;视图层&#xff0c;【前端团队】 所以产生问题&#xff1a;前后端联调…