【Python从入门到进阶】21、爬虫相关概念介绍

news2024/11/25 6:49:02

接上篇《20、HTML页面结构的介绍》
上一篇我们正式进入了Python爬虫的实战教程,主要讲解了要爬取的HTML页面的结构。本篇我们来介绍爬虫的相关概念。

一、什么是互联网爬虫

如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据。

通俗一点的解释,就是下面两种说法:

解释1:通过一个程序,根据url(http://taobao.com)进行爬取网页,获取有用信息
解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息

二、爬虫的核心

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

1、爬取网页

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

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

2、解析数据

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

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

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

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

●IP 封禁:目标网站会根据 IP 地址进行限制,当频繁请求时就会被封禁。
●验证码:有效防止爬虫程序自动化操作,但是也增加了用户的操作负担。
●User-Agent识别:通过浏览器头的User-Agent来判断请求是否为真实浏览器发来的,从而区分爬虫和真实用户。
●动态页面:一些网站采用异步加载或Ajax技术构建页面,需要进行JavaScript解析,爬虫需要模拟用户行为来获取数据。

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

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

在进行爬虫开发时,需要根据目标网站的特点选择合适的技术和策略,才能达到高效、稳定和安全的爬取结果。

三、爬虫的用途

网络爬虫被广泛应用于以下几个领域:

1、数据挖掘

网络爬虫可以爬取互联网上的大量数据,包括文本、图片、视频等形式的信息,并进行处理和分析,以挖掘有用的知识和信息。数据挖掘可以帮助企业或组织预测趋势、找到商机、优化运营等。

2、搜索引擎

搜索引擎是指能够根据用户的关键词查询,提供相关网页链接的应用程序。网络爬虫作为搜索引擎的重要组成部分,可以对互联网上的内容进行爬取和索引,将其存储在数据库中,为用户提供快速、准确的搜索结果。

3.舆情监测

网络爬虫可以从各种新闻网站、博客、微博等社交媒体中爬取相关信息,分析舆情趋势,了解公众对某些话题或事件的态度和看法。这对于政府、企业、组织等具有重要的参考价值。

4、电商数据爬取

网络爬虫也可以用于电商数据的爬取,获取商品价格、销售数量等信息,为商家提供竞争情报、市场分析等服务,帮助他们做出更明智的决策。

5、资源收集

有些人使用网络爬虫来收集各种资源,比如学习资料、音乐、视频等。虽然这种行为可能违反了一些网站的服务条款,但是在合法的前提下,也可以为用户提供便利。

目前爬虫流量在目标行业的分布情况:

这里的出行主要是类似12306的买票软件上,其次是社交媒体的新闻资讯,第三个是电商平台的信息,主要用于第三方优惠券商城或者同行业竞品分析等。

总之,网络爬虫作为一种自动化程序,可以从互联网上抓取大量的信息数据,并进行处理和分析,为用户提供有用的知识和信息。它已经成为现代社会不可或缺的一部分,应用前景非常广泛。

四、爬虫的分类

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

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

下面是淘宝网的robots协议:

可以看到它是不允许百度爬虫爬取任何页面的。

至此,爬虫的基本概念就讲解完毕了,下一篇我们来学习基于Python的urllib库的使用,它是我们使用爬虫的基础技术。

参考:尚硅谷Python爬虫教程小白零基础速通教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/130911450

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

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

相关文章

如何自己搭建chatgpt镜像网站

前沿 总所周知,访问以及注册chatgpt都是比较困难的,如何能畅游chatgpt而不受魔法的限制呢?还好openai给出了非常不错的api能使我们快速搭建一个镜像网站 准备工作 首先得准备一台服务器 这里推荐使用海外vps来进行搭建,缺点就是…

java基础入门-16-【阶段项目(综合练习doudizhu游戏)】

Java基础入门-16-【阶段项目(综合练习&doudizhu游戏)】 25、阶段项目(综合练习&doudizhu游戏)斗地主小游戏斗地主游戏1(控制台版)步骤一:准备牌步骤二:洗牌步骤三:发牌步骤四:看牌步骤五:给牌进行排序(两种方式排序)方式一:利用序号进行排序方式二:给每一…

阻焊设计~焊盘阻焊开窗、阻焊桥

阻焊设计 焊盘阻焊开窗 阻焊开窗应比焊盘尺寸大6mils以上(单边3mils),见下图: 阻焊桥 a) 相邻的SMD焊盘,SMD焊盘和插件孔、SMD焊盘和过孔、过孔与过孔之间需要保留阻焊桥;最小阻焊桥宽度2mils &#x…

vue3.0与vue2.0

一、生命周期的变化 1.vue2.响应式架构 2.vue3.0 响应式架构图 Vue3.0响应式框架在设计上,将视图渲染和数据响应式完全分离开来。将响应式核心方法effect从原有的Watcher中抽离。这样,当我们只需要监听数据响应某种逻辑回调(例如监听某个text属性的变化…

每日学术速递5.28

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.Improving Factuality and Reasoning in Language Models through Multiagent Debate 标题:通过多主体辩论改进语言模型中的事实性和推理 作者:Yilun Du,…

创建型设计模式02-工厂方法模式

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 工厂方法模式 1、工厂方法模式介绍 工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式…

MAC中文版 FCPX V10.6.6 专属视频剪辑后期工具安装教程

Final Cut Pro X简介 Final Cut Pro X又名FCPX,是MAC上非常不错的视频非线性剪辑软件,它剪辑速度超凡,具有先进的调色功能、HDR 视频支持,以及 ProRes RAW,让剪辑、音轨、图形特效、整片输出,支持主流的摄像机格式,是专业视频剪辑领域的王者…

Java经典笔试题—day14

Java经典笔试题—day14 🔎选择题🔎编程题🍭计算日期到天数转换🍭幸运的袋子 🔎结尾 🔎选择题 (1)定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所…

【数据湖仓架构】数据湖和仓库:范式简介

是时候将数据分析迁移到云端了——您选择数据仓库还是数据湖解决方案?了解这两种方法的优缺点。 数据分析平台正在转向云环境,例如亚马逊网络服务、微软 Azure 和谷歌云。云环境提供了多种好处,例如可扩展性、可用性和可靠性。此外&#xff0…

SpringMVC bean加载控制 -- SpringMVC入门保姆级教程(二)

文章目录 前言二、SpringMVC bean 加载控制1.bean加载控制2.添加Spring开发环境3.SpringMVC bean加载控制4.SpringMVC bean控制相关知识点 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能…

丝印设计~丝印内容、大小、距离、排列,位置

丝印设计 丝印的内容包括: a) PCB的名称/PCB的版本号 b) 元器件外形框 c) 元器件的序号 d) 元器件的极性和方向标志 e) 条码框 f) 插入PCB的名称(母板) g) 插针的位置序号 h) 安装孔位置代号 i) 元器件第1脚的位置代号 j) 过板方向 k) 光纤盘…

分治入门+例题

目录 🥇2.3.2 合并排序 🥇2.3.3 快速排序 🌼P1010 [NOIP1998 普及组] 幂次方 🌳总结 形象点,分治正如“凡治众如治寡,分数是也”,管理少数几个人,即可统领全军 本质&#xff…

js数据类型和六种运算结果为false的情况

数据类型 number:数字(整数、小数、NaN(Not a Number)) string:字符串、单双引皆可 boolean:布尔。true、false null:对象为空 undefined:当声明的变量初始化时,该变量的默认值…

vuex五大核心、辅助函数

一、vuex五大核心 分别为:state、getters、mutations、actions、modules state:用来存放我们的状态,也可以理解数据,类似与data中定义的数据;mutations:可以获取state里面的状态,进行修改,他只…

Hadoop---10、生产调优手册

1、HDFS—核心参数 1.1 NameNode 内存生产配置 1、NameNode内存计算 每个文件块大概占用150byte,一台服务器128G内存为例,能储存多少文件块呢? 12810241024*1024/150Byte ≈ 9.1 亿 G M KB Byte 2、Hadoop2.x系列,配置 NameNode…

leetcode506.相对名次

题目描述跳转leetcode详情 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高&#xff0…

day1 -- 资料库管理系统DBMS

学习目标: 了解什么是Mysql 如何安装Mysql 学习内容: 资料库概念资料库管理系统概念资料库管理系统分类SQL是什么安装Mysql启动Mysql并建立一张测试表格 正文部分 资料库 比如你喜欢摘抄优美的词句,那些优美的词句就是一种文字资料&#xf…

香橙派4和树莓派4B构建K8S集群实践之六:App服务部署

目录 1. 说明 1.1 关于PHPNginx体系的WebApp,这里将实践两种部署模式: 1.2 配置清单 2. PHPNginx体系的WebApp部署 2.1 单节点多容器模式A 2.1.1 准备工作 2.2.2 部署 2.2.3 访问效果 ​编辑 2.2 多节点单容器模式B 2.2.1 准备工作 2.2 配置…

笔记 | FastAPI创建新项目

当使用FastAPI创建项目时,首先需要安装FastAPI和其依赖项。可以使用pip来安装它们。请确保已经安装了Python和pip。 创建项目文件夹并进入该文件夹: mkdir myproject cd myproject创建并激活一个新的Python虚拟环境(可选,但强烈…