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

接上篇《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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

unity制作一款塔防游戏

文章目录 介绍寻路系统怪物生成器制作3种初级炮台、3种升级炮台设置炮台属性选择炮台,添加监听事件炮弹追踪攻击敌人拖动鼠标实现相机视角转换鼠标光标放在cube上变色文字动画 介绍 关键技术: 寻路系统 生成怪物算法 粒子系统 line renderer制作追踪射线…

通过Python的pdfplumber库提取pdf中表格数据

文章目录 前言一、pdfplumber库是什么?二、安装pdfplumber库三、查看pdfplumber库版本四、提取pdf中表格数据1.引入库2.定义pdf文件路径3.打开pdf文件4.获取pdf文件中的页数5.遍历每一页6.获取当前页内容7.提取表格数据8.输出表格数据9.效果 总结 前言 大家好&#…

Scala学习(九)---List集合

文章目录 1.List1.1 不可变List集合1.2 可变集合ListBuffer 1.List List集合默认为不可变集合,List集合在实例化的时候,无法通过new关键字进行实例化,只能通过伴生apply方法来对其进行实例化 1.1 不可变List集合 创建一个不可变list集合 …

HUD(抬头显示)的方案介绍

目录 一、基于DLP3030-Q1的HUD电路设计 二、DLP3030-Q1的介绍 三、DLP3030-Q1工作原理 四、DLPC120-Q1DMD 显示控制器 五、TMS320F2802332 位 MCU 六、 HUD显示实例 HUD主板实例 七、HUD的软件环境 一、基于DLP3030-Q1的HUD电路设计 本设计采用了DLP3030-Q1 芯片组&…

设计模式 -第1部分 避免浪费- 第1章 Flyweight 模式 - 共享对象避免浪费

第1部分 避免浪费 注:其内容主要来自于【日】-结城浩 著《图解设计模式》20章节 极力推荐大家阅读原著 第1章 Flyweight 模式 - 共享对象避免浪费 1.1 Flyweight 模式 Flyweight 的意思"轻量级",其在英文中的原意指比赛中选手体重最轻等级的一…

【C语言】实现猜数字游戏——随机数

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 该篇将对 选择与循环语句 进行运用,实现猜数字游戏。 需求:游戏后可以选择再次进行游戏,也可以选择…

「实在RPA·烟草数字员工」助力烟草行业数字化转型加速度

烟草行业作为烟草产业链上重要一环,外部连接烟草工业企业、零售客户、消费者,内部包含营销、专卖、烟叶、物流等诸多业务,信息系统众多,企业数据量庞大。因此,清楚地了解自身存在的痛点,找到适合自身业务需…

如何在华为OD机试中获得满分?Java实现【寻找峰值】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

gitbook在centos上安装

1)官网下载Node.js的Linux64位的二进制包:Download | Node.js 或者在线下载: wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz ​​2)到指定目录​解压 cd /opt/gitbook tar -xJf node-v12.16.1-linux-x64.tar.xz mv node-…

STM32采集传感器数据通过排序取稳定值

一、前言 在物联网、单片机开发中,经常需要采集各种传感器的数据。比如:温度、湿度、MQ2、MQ3、MQ4等等传感器数据。这些数据采集过程中可能有波动,偶尔不稳定,为了得到稳定的值,我们可以对数据多次采集,进行排序,去掉最大和最小的值,然后取平均值返回。 二、排序算法…

运维工程师面试总结(含答案)

运维工程师面试总结 原文链接:https://www.cuiliangblog.cn/detail/article/2 一、linux 1. linux系统启动流程 第一步:开机自检,加载BIOS第二步:读取MBR第三步:Boot Loader grub…

华为OD机试之真正的密码(Java源码)

真正的密码 题目描述 一行中输入一个字符串数组,如果其中一个字符串的所有以索引0开头的子串在数组中都有,那么这个字符串就是潜在密码在所有潜在密码中最长的是真正的密码,如果有多个长度相同的真正的密码,那么取字典序最大的为…

【ClickHouse】

文章目录 一、表引擎1、表引擎的作用2、TinyLog3、Memory4、MergeTree二、数据库引擎1、作用--跨种类交换数据2、示例 三、MergeTree引擎1、简单使用2、分区partition by3、主键primary key4、order by(必填) 一、表引擎 1、表引擎的作用 CK表引擎决定…

智能运维应用之道,告别企业数字化转型危机

面临的问题及挑战 数据中心发展历程 2000 年中国数据中心始建,至今已经历以下 3 大阶段。早期:离散型数据中心 IT 因以项目建设为导向,故缺乏规划且无专门运维管理体系,此外,开发建设完的项目均是独立运维维护&#…

【喜闻乐见,包教包会】二分图最大匹配:匈牙利算法(洛谷P3386)

🎭不要管上面那玩意。。。 引入 现在,你,是一位酒店的经理。 西装笔挺,清瘦智慧。 金丝眼镜,黑色钢笔。 大理石的地板,黑晶石的办公桌,晶莹的落地玻璃。 而现在,有几个雍容华贵的…

智慧城市同城V4小程序V2.24独立开源版 + 全插件+VUE小程序开源前端+最新用户授权接口

智慧城市同城V4小程序V2.22开源独立版本月最新版,与上一版相比修复了一些小细节,功能本身并无大的变化。新版系统包含全插件、包括很多稀缺收费的插件都在里面如括招聘、 家政等,外加小程序的VUE开源前端,整个系统全开源&#xff…

机器学习 | 降维:PCA主成分分析

本文整理自 长路漫漫2021的原创博客:sklearn基础篇(九)-- 主成分分析(PCA)李春春_的原创博客:主成分分析(PCA)原理详解bilibili视频:用最直观的方式告诉你:什…

Python中模块的使用方法4

1 模块、包和库的区别 Python中,模块的英文是“module”,是一个以py为后缀名的文件;包的英文是“package”,是一个包含了多个模块的目录;库的英文是“library”,包含了具有相关功能的包和模块。 2 模块的…

web练习第二周

前言:(博主个人学习笔记,不用看)web练习第二周,仅做出前3题。相比于第一周,难度大幅增加,写题时就算看了wp还是像个无头苍蝇一样到处乱创,大多都是陌生知识点,工具的使用…

LeetCode刷题(ACM模式)-02链表

参考引用:代码随想录 注:每道 LeetCode 题目都使用 ACM 代码模式,可直接在本地运行,蓝色字体为题目超链接 0. 链表理论基础 0.1 链表定义 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成&#xff1a…