likes
comments
collection
share

Python爬虫之路(1)-- 为什么学习爬虫

作者站长头像
站长
· 阅读数 56

为什么要学习爬虫?

一、前言

在开始学习一门技术的时候,你永远要问自己一句“为什么我要学它?”。无论是出于好奇,还是处于兴趣或是种种目的,你都要清楚的明白自己的学习目的,这样才能让你坚持学习下去,有所收获,而不是竹篮打水一场空。

二、爬虫能做什么

我会用具体的实例告诉你,爬虫究竟可以做些什么事情,在你清楚爬虫能做什么之后,你才能知道自己是否需要学习这门技术。下面我会用我写过的一些具体例子告诉大家。

场景1:批量的获取自己喜欢的图片

当你在某个网站上找自己喜欢的某个系列的照片时,下载的时候总是要一张张的点开,然后在一次次的点击下载,加载到本地。这个时候你会觉得,如果我有一个软件,可以一下把这些图片全部下载下来就好了,而爬虫就可以实现图片的批量下载。

目标网站:www.58pic.com/tupian/shan…

最终效果图:

Python爬虫之路(1)-- 为什么学习爬虫

Python爬虫之路(1)-- 为什么学习爬虫

可以发现,总共耗时4s,下载了16张图片,极大的减少了人工操作的耗时。这还是在没有使用异步并发(同时下载多个图片)的情况下,是串行处理(一张图片一张图片下载)的,如果采用异步并发的操作,那么下载的速度还会有更大的提升。

场景2:在某站上下载自己喜欢的视频或音频

某站上有着许多的优秀视频,但是网页端他没有提供给我们下载的按钮,而客户端版本下载下来的都是无法直接播放的视频,只能使用客户端才能正常播放。这让我们在上台展示的时候,需要打开某站才能够展示视频。但这一步往往会很受限制,如果短时间没有找到对应视频,或者展示的电脑上没有网络无法打开网站,这些都会极大程度上给我们造成麻烦。同时我们有时候也希望能够对视频进行二次开发,让视频更加多姿多彩,这也需要将视频下载下来。

目标网站:“我不要在失败孤独中死去”哔哩哔哩bilibili

效果展示:Python爬虫之路(1)-- 为什么学习爬虫

可以发现,出来视频的下载,我也拿到了视频对应的音频。那么有没有一种可能,通过在B站上下载自己喜欢的音乐的音频,然后将他们组合起来,在播放器里面播放,从而减少各种音乐VIP的消费(当然,支持正版,此处仅作为探讨)。

场景3:数据的采集

有些时候,我们会比较好奇某些商品在不同平台的价格对比或者一些股票走势,亦或者是分析自己文章的数据情况或者那些视频更容易收获人们的关注。

此处我将直接展示各种结果(未做数据分析):

Python爬虫之路(1)-- 为什么学习爬虫

Python爬虫之路(1)-- 为什么学习爬虫

虽然各大平台都提供了一些数据分析的支持,但这些功能往往不能满足我们的需求,那我们可以自己拿到数据,然后根据自我需求进行分析,如下(是某个游戏平台的道具交易情况):

Python爬虫之路(1)-- 为什么学习爬虫

Python爬虫之路(1)-- 为什么学习爬虫

三、爬虫是什么

通过上面的例子,你知道了爬虫能做些什么了,大概也能清楚爬虫是什么了。现在正式的介绍一些,爬虫究竟是什么。

Python爬虫之路(1)-- 为什么学习爬虫

1、维基百科的定义

网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。 网络搜索引擎等站点通过爬虫软件更新自身的网站内容或其对其他网站的索引。网络爬虫可以将自己所访问的页面保存下来,以便搜索引擎事后生成索引供用户搜索。 爬虫访问网站的过程会消耗目标系统资源。不少网络系统并不默许爬虫工作。因此在访问大量页面时,爬虫需要考虑到规划、负载,还需要讲“礼貌”。 不愿意被爬虫访问、被爬虫主人知晓的公开站点可以使用robots.txt文件之类的方法避免访问。这个文件可以要求机器人只对网站的一部分进行索引,或完全不作处理。 互联网上的页面极多,即使是最大的爬虫系统也无法做出完整的索引。因此在公元2000年之前的万维网出现初期,搜索引擎经常找不到多少相关结果。现在的搜索引擎在这方面已经进步很多,能够即刻给出高素质结果。 爬虫还可以验证超链接和HTML代码,用于网络抓取

2、Google和百度搜索引擎是如何工作的呢?

  • 首先,网络爬虫持续抓取网站内容,将其存储在搜索引擎的数据库中。
  • 紧接着,索引程序对数据库中的网页进行整理,创建倒排索引。
  • 最后,当用户输入查询关键词时,搜索程序会在索引中查找相关内容,并通过排序算法(例如Pagerank)将最相关的结果展现给用户。

这一过程虽然看似简单,却构建了一个复杂的搜索引擎系统。网络爬虫作为系统的基础部分,对数据的完整性和丰富性起着决定性作用。简而言之,网络爬虫是用于自动获取互联网上公开数据的工具。

重要的是要明确,网络爬虫抓取的是公开数据,并不涉及非法手段获取非公开数据。

所谓公开数据,指的是网站上公开供用户浏览和获取的信息。虽然这些数据是公开的,但当个人或机构通过大规模收集这些数据来获利时,可能会引起数据提供方的不满,甚至导致法律问题。例如,Google在早期因此曾面临诉讼。

为了解决这一问题,搜索引擎和网站之间形成了一种默契——robots.txt协议。网站通过这个文件指明哪些内容可以被爬虫抓取,哪些不可以;同时,搜索引擎在访问网站时会通过User-Agent标识自己的身份(如Googlebot、Baiduspider),以此保持双方的和平共处和互利共赢。

3、爬虫Crawler的职责

抓取页面(Fetching)

网络爬虫会按照一定的规则和算法,访问网站上的页面并下载页面内容。这个过程需要考虑页面的深度、频率、并发请求数量等因素,以确保高效地获取数据。

解析页面(Parsing)

爬虫需要解析下载的页面内容,提取其中的文本、链接、图像等信息。通过解析页面,爬虫可以识别页面结构、内容特征以及与其他页面的关联。

处理链接(Link Handling)

爬虫在解析页面时会提取页面中的链接,然后根据一定的策略处理这些链接。这包括去重、筛选、调度等操作,以确保爬虫系统能够高效地覆盖目标网站的内容。

存储数据(Storing)

爬虫需要将抓取到的数据进行存储,通常存储在数据库或索引中。这样可以为后续的数据处理、索引建立和搜索提供支持。

遵守规则(Respect Robots.txt)

:爬虫需要遵守网站所有者制定的规则,比如robots.txt文件中定义的爬取限制。爬虫需要尊重网站的爬取策略,以避免对目标网站造成不必要的干扰。

4、总结

网络爬虫在信息检索系统中扮演着数据搜集和处理的关键角色。通过抓取、解析、处理链接、存储数据、更新索引等一系列操作,网络爬虫为搜索引擎提供了高效的数据支持,帮助用户快速准确地获取所需信息。

四、结语

爬虫并不是Python语言的专利,Java、Js、C、PHP、Shell、Ruby等等语言都可以实现,那为什么Python爬虫会这么火?我觉得相比其他语言做爬虫Python可能就是各种库完善点、上手简单大家都在用,社区自然活跃,而社区活跃促成Python爬虫慢慢变成熟,成熟又促使更多用户来使用,如此良性循环,所以Python爬虫相比其他语言的爬虫才更火。

学习爬虫更多的时候是为了提供便利的数据采集系统。但要注意,因为当你使用爬虫的时候往往意味着你要大量的去获取网站的数据,发送大量的请求,这对网站开发方的服务器而言是极大的负荷。所有我们在使用爬虫的时候,要注意控制请求速度,不要给对方服务器造成压力。

然后,大部分人学习爬虫可能是想要去获取一些需要付费的资源,但现在各个付费资源网站在对身份校验上是极其严苛的,很难绕过,并且我也极度不支持去这么做,支持正版,支持知识产权,这样才能创建一个良好的环境。

有任何问题欢迎大家的评论和指正。再次声明,本专栏只做技术探讨,严谨商用,恶意攻击等。

这是我的 GitHub 主页:Rosyrain (github.com),里面有一些我学习时候的笔记或者代码。

欢迎大家Follow/Star/Fork三连。

转载自:https://juejin.cn/post/7372577541112528908
评论
请登录