你是网络爬虫和网络爬虫工具的新手吗?那么现在就来看看这篇关于网络爬虫的入门文章吧。在这里,你将了解它们的工作原理以及更多相关信息。

万维网上充满了自动化机器人,这些机器人帮助在互联网上自动化任务。在众多网络机器人中,一些被称为网络爬虫的机器人不仅对其所有者有用,对整个互联网社区也非常有帮助。

在本文中,你将深入了解网络爬虫,包括它们的工作原理、应用、开发者面临的问题、爬虫识别以及如何开发它们。可以将这篇文章视为网络爬虫和网络抓取的入门指南。让我们从什么是网络爬虫开始。


什么是网络爬虫?

网络爬虫是一种计算机程序,旨在帮助自动化访问互联网网站的过程,以进行网络索引或收集特定数据。它们也被称为网络蜘蛛、机器人,或简称为爬虫。但称其为网络爬虫或蜘蛛会更具体,因为还有许多其他程序,如抓取器,也可以被称为机器人和爬虫。

网络爬虫通过一种称为网络抓取的过程来执行任务。互联网是一个链接网络,网络爬虫需要爬取已知链接(URL)以寻找未知链接,进而搜索特定的数据点。

网络爬虫对于搜索引擎来说非常重要,因为市场上的所有搜索引擎都有自己独特的网络爬虫,它们会在互联网上漫游,访问网页并创建索引,以便当您发送查询时,搜索引擎知道在互联网上哪里可以找到您所请求的所需信息。

有些网络爬虫在其任务上非常专业。虽然网络爬虫被视为好的和有益的,但它们也可能是有害的,就像出于险恶目的而构建的黑帽网络爬虫一样。


网络爬虫如何工作?

虽然网络爬虫的工作机制会因其具体目标的不同而有很大差异,但我们可以就网络爬虫的工作方式达成共识。首先,网络爬虫并没有互联网上所有 URL 的列表,也没有它所针对的互联网部分。有趣的是,它需要抓取这些 URL 来收集所需的数据。那么它是如何做到这一点的呢?

网络爬虫从已知 URL 列表开始,也称为种子 URL。它所做的就是访问这些 URL 并收集两类数据 – URL 和感兴趣的特定数据。收集 URL 是为了进行爬虫,然后将其添加到要爬虫的 URL 列表中。

索引等特定数据点是执行爬取任务的真正原因,它们被保存在数据库中或用于创建索引 – 仍然需要保存在数据库中。每次爬取页面后,爬虫都会查看要爬取的 URL 列表并选择下一个要访问的 URL。

互联网非常庞大,网络爬虫,特别是搜索引擎拥有的、旨在爬取整个互联网的网络爬虫,如果它们按照发现的顺序抓取接触到的所有链接,那么效率将非常低。

因此,网络爬虫必须使用一些策略在每次抓取页面后决定接下来要抓取哪个链接。这些策略包括 URL 的重要性(由链接到该 URL 的 URL 数量定义)、上次抓取页面的时间以及网站 robots.txt 中的指令。最终,并非所有 URL 都会被抓取。


爬虫如何识别自己

互联网上的互动与我们日常的互动并无太大区别。当浏览器、网页抓取工具、网页爬虫或任何其他计算机程序向网页服务器发送网页请求时,它需要使用一个称为“ User-Agent ”的字符串来标识自己。

此字符串通常包含计算机程序的名称 – 有些包含其版本和其他信息,这些信息将显示向 Web 服务器提供其他特定信息。网站使用此 User-Agent 字符串来指定要作为响应返回的网页和布局的版本。

对于网络爬虫来说,它们需要向网站表明自己的身份,以便网站能够以应有的方式对待它们。网络爬虫必须使用名称,网站管理员可以使用这些名称来追踪爬虫的所有者/开发者,这样如果网站管理员需要向特定爬虫背后的团队传达任何信息,事情就会变得更容易。有了独特、可区分的名称,就很容易找出特定爬虫发送的请求。网站可以通过其 robots.txt 与特定爬虫沟通参与规则,只要抓取其网页即可。

虽然爬虫程序表明自己的身份符合道德规范,但由于存在爬虫程序偏见,它们通常不会按应有的方式表明自己的身份。爬虫程序偏见是指互联网上的网站偏向某些选定的爬虫程序,允许它们抓取其网页,同时剥夺其他爬虫程序的抓取权。

谷歌旗下的 Googlebot 比互联网上任何其他自动化机器人都更享受这一点。事实上,大多数网站只允许谷歌抓取他们的页面,而阻止其他网站。正因为如此,抓取工具无法像它们应该的那样识别自己,最终它们会使用Googlebot或一些流行的网络浏览器(如 Google Chrome 和 Firefox)的 User-Agent 字符串。


网络爬虫及爬虫的应用

网络爬虫有很多应用,在某些情况下,它的应用与网络抓取工具的应用重叠。以下是网络爬虫的一些用途。

网络索引

你有没有想象过没有搜索引擎的互联网?如果你有,那么你就会知道,没有搜索引擎,人们对许多网站存在的了解将非常有限。好吧,从一开始,我就说过搜索引擎都有爬虫。这些爬虫会爬取互联网,收集网页快照并创建网络索引,这样当你发送查询时,就可以更轻松地搜索索引并将你指向相关页面。

数据收集和汇总

除了网络索引之外,网络爬虫的另一个应用是从网站收集一些特定数据。这是它们与网络抓取工具重叠的领域。然而,与更具体且事先知道要访问的网址的网络抓取工具不同,网络爬虫没有——它们从已知开始到未知。收集的一些常见数据包括市场勘探的联系方式、价格数据收集、社交媒体数据提取等等。

漏洞检测

对于黑客来说,爬虫对于漏洞检测非常有用。虽然有特定的目标会很有帮助,但在某些情况下,他们没有特定的目标。因此,他们利用网络爬虫在互联网上四处走动,使用一些清单访问网页来检测漏洞机会。道德黑客这样做是为了帮助保护互联网安全,而坏黑客这样做是为了以负面的方式利用检测到的漏洞。

专业工具开发

除了漏洞检测程序之外,网络爬虫在许多专门的工具中也相当重要,例如搜索引擎优化工具,它会爬取特定的网站进行分析,或者为了获取反向链接数据而构建链接网络。


网络爬虫面临的问题

网络爬虫并非没有自己的问题。下面讨论网络爬虫及其开发人员面临的一些问题。

网站反机器人系统

问题是,除了 Googlebot 和搜索引擎拥有的爬虫之外,网站不希望任何其他以网络爬虫或抓取器形式出现的自动化机器人访问其页面。由于内容盗窃和劫持,许多网站不赞成自动访问。

有些人不喜欢爬虫,因为它们会降低服务器速度并增加运行成本。因此,网站设置了一些反机器人技术,例如 IP 跟踪和阻止、验证码系统,甚至浏览器指纹识别。如果爬虫不在网站上允许的爬虫之列,它必须绕过这些反机器人技术才能访问网站内容。

深网

问题是,无论爬虫如何尝试爬取互联网,互联网上仍有一些部分是网络爬虫无法访问的,尤其是那些事先不知道将访问哪些页面的部分。事实上,根据一些报告,互联网上只有大约 40% 到 70% 的网页可以通过爬虫访问。

这些是公开的网页。其他网页(包括未链接到任何其他网页的新网页和孤立网页)不会被网络爬虫发现。此外,付费墙和登录后的私人网页也被排除在外。

JavaScript 富文本页面

您可能不知道,当您访问 Ajax 化网页时,互联网上的大多数爬虫程序都是无用的。这是因为传统上,网站被设计为静态的,并且模型很简单 – 发送 Web 请求,然后返回包含请求内容的 HTML 文件。

爬虫是为这种模型设计的,它们所要做的就是解析所需的数据。AJAX 的出现改变了这种情况,因为页面上的内容在某些 JavaScript 事件后显示和加载。由于网络爬虫不是为此而构建的,因此它们很难从这些网页中提取数据。然而,一些网络爬虫利用屏幕抓取和其他方法来解决这个问题。


网络爬虫与网络抓取工具的区别

网络爬虫和抓取工具或相关过程(抓取和抓取)可互换使用,许多人认为它们是相同的。虽然网络爬虫和抓取工具都通过自动化方式从网页中提取数据,但它们并不相同。网络爬虫通常没有它将访问的完整 URL 列表 – 它只有种子 URL,然后从那里找到它需要访问的其他 URL。但是,网络抓取工具完全知道它们需要访问的页面,并且完全了解它将从哪个页面抓取数据。

网络抓取工具被网站十分痛恨,因为它们被视为内容窃贼,而许多网络爬虫,特别是搜索引擎爬虫,却深受网站的喜爱。

虽然网络爬虫必须解析最精细的细节,即它所需的特定数据,但网络爬虫可能并没有那么专业。说了这么多,你需要记住,严格意义上的网络爬虫需要一定程度的网络爬取


如何构建网络爬虫

当您尝试构建一个可以抓取几千个页面的简单网络爬虫时,您会认为构建网络抓取工具是一项简单的任务。

但是,当你需要构建一个大规模的网页爬虫,爬取数百万个它一无所知的网页,并且每天连续执行时,你就会知道这不是一件容易的事。你需要考虑它的工程,防止数据库和 I/O 问题。

一般来说,您可以使用任何编程语言来构建网络爬虫。虽然 Python 似乎是许多小型爬虫开发人员的首选语言,但大型公司大量使用 C 和 C++。项目的具体要求将决定您将在爬虫中纳入哪些功能。但您需要保留要访问的 URL 列表,并在遇到新 URL 时不断将其添加到列表中。

但是,请确保对 URL 进行规范化,以确保列表不包含重复的 URL。爬虫程序使用单线程永远无法高效运行。它必须是多线程的,并且您要确保它不会对数据库造成任何问题。

出于道德原因,您必须尊重 robots.txt 并避免抓取不想被抓取的网站。但这并不是强制性的,因为网络抓取通常是合法的 – 但是,根据您使用数据的用途,它可能是非法的。因此,最好咨询律师。为您的抓取工具提供唯一的 User-Agent 也是一种很好的做法,但出于某些显而易见的原因,您可能希望模仿常规浏览器。


结    论

网络爬虫是现代网络的重要组成部分,无论你是否喜欢它们或承认它们的重要性,互联网已经与它们共存,并且它们将继续存在。没有它们,就不会有高效的搜索引擎帮助我们在线发现内容。然而,其中一些爬虫在操作上可能不够合乎道德。

这篇文章有用吗?

点击星号为它评分!

平均评分 / 5. 投票数:

到目前为止还没有投票!成为第一位评论此文章。

No more articles