爬虫概念简述

爬虫简述

    • ⼀、什么是爬虫?
    • 二、爬虫有什么用?
    • 三、爬虫的分类
    • 四、所谓的“爬虫学的好,牢饭吃到饱 !”
    • 五、爬虫的大致流程

⼀、什么是爬虫?

​ 简言之,爬虫可以帮助我们把网站上的信息快速提取并保存下来。

​ 我们可以把互联网比作一张大网,而爬虫 (即网络爬虫) 便是在网上爬行的蜘蛛(Spider)。把网上的节点比作一个个网页,爬虫爬到这个节点就相当于访问了该网页,就能把网页上的信息提取出来。我们可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网页的数据就可以被抓取下来了。

二、爬虫有什么用?

  • 比如,我们在网上看到了很多精美的图片,想要保存下来,但是一次次的右键另存为就显得非常的费时费力,那么我们就可以利用爬虫将这些图片快速的抓取下来,极大地节省时间和精力。
  • 比如,我们想收集一些新闻内户上的新闻,看一下每天都发生了哪些事情,我们可以写个爬虫把新闻爬取下来,每天运行一次或者设置定时任务定时运行,这样我们可以不用进入网页就能看到新闻,也可以根据关键词进行热点分析。

另外,大家抢过的火车票、演唱会内票、茅台等等都可以利用爬虫来实现,所以说爬虫的用处十分强大

三、爬虫的分类

我们常见的爬虫有通用爬虫聚焦爬虫

  • 通用爬虫:针对于百度、谷歌、必应这类搜索引擎类的爬虫程序
  • 聚焦爬虫:又名定向爬虫,就是我们平时写的针对某个需求或者某个问题而写的程序

四、所谓的“爬虫学的好,牢饭吃到饱 !”

​ 时不时冒出一两个因为爬虫入狱的新闻,是不是爬虫是违法的呀,爬虫目前来说是灰色地带的东西,所以大家还是要区分好 ,避免牢底坐穿 !

​ 网上有很多关于爬虫的案件,就不一一截图,大家自己上网搜索吧。

​ 有朋友说,“为什么我学个爬虫都被抓,我犯法了吗?”

​ 这个目前还真的不好说,主要是什么,目前爬虫相关的就只有一个网站的 robots协议,这个robots是网站跟爬虫间的协议,用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎访问网站的时候要查看的第一个文件。当一个搜索蜘蛛访问一个站点时,它首先会检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。

​ 也就是说robots协议是针对于通用爬虫而言的,而聚焦爬虫(就是我们平常写的爬虫程序) 则没有一个严格法律说禁止什么的,但也没有说允许,所以目前的爬虫就处在了一个灰色地带,这个robots协议也就仅仅起到了一个”防君子不防小人“的作用,而很多情况下是真的不好判定你到底是违法还是不违法的。所以大家使用爬虫尽量不从事商业性的活动吧。

例:以百度为例

​ 在网站后添加/robots.txt:https://www.baidu.com/robots.txt;

​ 规定了哪些爬虫不允许爬取哪些页面

image-20231101114057583

五、爬虫的大致流程

  1. 获取网页

    ​ 爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码。源代码里包含了网页的部分有用信息,所以只要把源代码获取下来,就可以从中提取想要的信息了。

    ​ 我们用浏览器浏览网页时,其实浏览器就帮我们模拟了这个过程,浏览器向服务器发送了一个个请求,返回的响应体便是网页源代码,然后浏览器将其解析并呈现出来。所以,我们要做的爬虫其实就和浏览器类似,将网页源代码获取下来之后将内容解析出来就好了,只不过我们用的不是浏览器,而是 Python。

    ​ 刚才说,最关键的部分就是构造一个请求并发送给服务器,然后接收到响应并将其解析出来,那么这个流程怎样用 Python 实现呢?

    ​ Python 提供了许多库来帮助我们实现这个操作,如urllib、requests等。我们可以用这些库来实现 HTTP 请求操作,请求和响应都可以用类库提供的数据结构来表示,得到响应之后只需要解析数据结构中的 body 部分即可,即得到网页的源代码,这样我们可以用程序来实现获取网页的过程了。

  2. 提取信息

    ​ 获取网页的源代码后,接下来就是分析网页的源代码,从中提取我们想要的数据。首先,最通用的方法便是采用正则表达式提取,这是一个万能的方法,但是在构造正则表达式时比较复杂且容易出错。

    ​ 另外,由于网页的结构有一定的规则,所以还有一些根据网页节点属性、CSS 选择器或 XPath 来提取网页信息的库,如 BeautifulSoup4、pyquery、Ixml 等。使用这些库,我们可以高效快速地从中提取网页信息,如节点的属性、文本值等。

    ​ 提取信息是爬虫非常重要的部分,它可以使杂乱的数据变得条理、清晰,以便我们后续处理和分析数据。

  3. 保存数据

    ​ 提取信息后,我们一般会将提取到的数据保存到某处以便后续使用。这里保存形式有多种多样,如可以简单保存为TXT文件或JSON文件,也可以保存为我们常用的CSV文件或Excel文件,还可以保存到数据库,如 MySOL 和 MongoDB 等,这个需要看你自己的具体需求,怎样再提取数据方便就保存为什么样的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2016年第五届数学建模国际赛小美赛C题对超级细菌的战争解题全过程文档及程序

2016年第五届数学建模国际赛小美赛 C题 对超级细菌的战争 原题再现: 最近有很多关于我们抗生素耐药性危机的讨论。进化出的能够抵抗抗生素的细菌每年杀死70万人,越来越强大的细菌正在世界各地传播。研究人员担心,我们将进入一个后抗生素时代…

U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)

文章目录 AbstractIntroductionNetwork ArchitectureConclusiontorch code hh 源代码 Abstract 人们普遍认为,深度网络的成功训练需要成千上万个带注释的训练样本。在这篇论文中,我们提出了一个网络和训练策略,该策略依赖于数据增强的强大使…

红队打靶练习:DIGITALWORLD.LOCAL: MERCY V2

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 6、总结 目录探测 1、gobuster 2、dirsearch WEB enum4linux枚举工具 smbclient工具 knock工具 CMS 文件包含漏洞 Tomcat 提权 系统信息收集 本地提权 get root 信息收集 1、arp ┌──…

redis 从0到1完整学习 (六):Hash 表数据结构

文章目录 1. 引言2. redis 源码下载3. dict 数据结构4. 哈希表扩容与 rehash5. 参考 1. 引言 前情提要: 《redis 从0到1完整学习 (一):安装&初识 redis》 《redis 从0到1完整学习 (二):red…

HarmonyOS4.0系统性深入开发01应用模型的构成要素

应用模型的构成要素 应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。 HarmonyOS应用模型的构成要…

数字信号的理解

1 数字信号处理简介 数字信号处理 digital signal processing(DSP)经常与实际的数字系统相混淆。这两个术语都暗示了不同的概念。数字信号处理在本质上比实际的数字系统稍微抽象一些。数字系统是涉及的硬件、二进制代码或数字域。这两个术语之间的普遍混…

cleanmymac和柠檬清理哪个好 cleanmymac有必要买吗

大家好,不定期分享正版软件激活安装、使用帮助,售后等知识。 在我们的日常使用中,电脑常常会出现卡顿、运行缓慢的情况。这时候,我们通常会想到清理电脑,以期望恢复电脑的正常运行状态。而在清理电脑时,有两…

FPC柔性线路板使用UV胶水的优势有哪些?

UV胶水在FPC柔性线路板的装配中具有明显的优势: 快速固化 UV胶水在紫外线照射后10秒左右迅速固化,因此它能够在短时间内完成连接。这非常有助于实际工业作业中提高生产效率,特别是在需要大批量生产的情况下。 精确控制固化时间 UV胶水的固…

在Next.js和React中搭建Cesium项目

在Next.js和React中搭建Cesium项目,需要确保Cesium能够与服务端渲染(SSR)兼容,因为Next.js默认是SSR的。Cesium是一个基于WebGL的地理信息可视化库,通常用于在网页中展示三维地球或地图。下面是一个基本的步骤,用于在Next.js项目中…

助力智能人群检测计数,基于DETR(DEtectionTRansformer)开发构建通用场景下人群检测计数识别系统

在一些人流量比较大的场合,或者是一些特殊时刻、时段、节假日等特殊时期下,密切关注当前系统所承载的人流量是十分必要的,对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段,本文的主要目的是想要…

Debezium系列之:Debezium JDBC 连接器支持批量同步数据

Debezium系列之:Debezium JDBC 连接器支持批量同步数据 一、设置批次二、配置消费者最大轮询记录三、性能测试结果四、结论 一、设置批次 由于我们之前的版本主要关注核心功能,因此我们的最新版本致力于解决与连接器相关的主要痛点:性能。 …

sql_lab之sqli中的报错注入,less13

报错注入&#xff08;less-13&#xff09; 正常报错注入&#xff1a; 1.输入用户名和密码123 123显示登录错误 2.输入用户名和密码123’ 123显示登录错误 123后面有’)说明是’)注入 3.查询数据库名 1) and updatexml(<a><b></b></a>,concat(1111…