in ,

什么是网页抓取:初学者的终极指南!Scraping 101

什么是网页抓取

网页抓取对于任何企业来说都是一个非常强大的工具。它允许从互联网上大规模收集数据以提取有价值的见解:产品和定价信息、竞争对手的行为、消费者情绪、业务线索等等。本指南将全面概述什么是网络抓取、它是如何工作的以及你可以用它做什么。让我们开始吧!


什么是网页抓取 – 定义

网络抓取是指从网络收集数据的过程。通常,它是使用网​​络抓取软件或定制的网络抓取工具自动完成的。但该术语还包括手动网络抓取——手动复制粘贴信息。 

网络抓取有各种名称。它也可以称为网络收获、网络数据提取、屏幕抓取或数据挖掘。这些术语之间存在一些细微的差异,但它们或多或少可以互换使用。 

网页抓取与 API

网页抓取并不是从网站获取数据的唯一方法。它甚至不是默认的。首选方法是使用 API。 

API 或应用程序编程接口是以编程方式与某个网站或应用程序交互的规则。像 reddit.com 这样的网站有允许任何人下载其内容的 API。 

API 的问题在于并非所有网站都有它们。那些经常强加您可以收集哪些数据以及多久收集一次的数据。出于某种原因,API 甚至比某些网络抓取脚本更容易更改或中断。 

因此,Web 抓取与 API 之间的主要区别在于前者提供了更好的数据访问权限:无论您在浏览器中看到什么,都可以获得。但是,网络抓取经常发生在网站不知道的情况下。当他们确实发现时,他们对此并不十分高兴。  

网络爬虫和网络抓取

术语网络爬虫和网络抓取出现在类似的上下文中,因此您可能会发现它们之间的关系不清楚。好吧,它们并不完全相同。

网络爬虫遍历网站上的链接,不加选择地下载它在途中遇到的所有内容:从 URL 结构到内容。网络爬虫最好的例子是谷歌搜索——它会不断地爬取整个互联网,以根据调查结果制作可搜索的索引。 

网络抓取意味着您正在从网站下载和提取特定数据。根据您的需要,它可以是计算机显示器、职位或其他东西的价格。 

从技术上讲,网络抓取可以被视为更广泛的网络爬取过程的一部分。毕竟,要抓取一些内容,你必须先找到它。但在文化上,抓取通常具有独立的身份,尤其是当讨论转向网络抓取的合法性时。


网页抓取的工作原理

网页抓取涉及连续完成的多个步骤:

  1. 确定您的目标网站和您需要的数据。例如,这可能是亚马逊上 iPhone 的定价信息。  
  2. 为您的项目量身定制一个名为 web scraper 的机器人。 
  3. 以 HTML 格式提取数据。它可以像发出 GET 请求一样简单,也可以像处理表单和延迟加载 JavaScript 元素一样困难。 
  4. 清理数据以供进一步使用。这个过程称为数据解析;它可以在刮削过程中或之后发生。最终结果是 .json 或其他可读格式的结构化数据。
  5. 根据需要调整您的网络刮刀。大型网站往往会经常变化,您可能会找到更有效的做事方式。 

有许多工具可以促进抓取过程或减轻您的一些任务。现成的刮板让您避免自己建造;代理可以帮助你绕过阻塞;如果您愿意,您可以获得抓取服务来为您完成整个工作。 


网页抓取有什么用?

网页抓取是一种获取数据的方法。无论您如何处理这些数据,都取决于您的需求和想象力。不用说,网络抓取的使用范围是巨大的。以下是一些在企业中比较受欢迎的:

  • 搜集价格以获取最新的定价信息——价格刮包括建立一个价格刮板来持续监控电子商务网站。如果您想跟上竞争对手的步伐并与竞争对手竞争,了解最新的销售和定价调整(有时同时在多个地区)非常重要。网络抓取可确保您始终拥有新鲜的定价数据流。
  • 聚合来自多个来源的数据——数据聚合公司一次抓取多个来源并比较他们的发现或为任务选择最佳来源。数据聚合本身可以是补充性的,也可以是整个业务模型。它在为许多航班聚合网站提供支持的旅游业中尤为普遍。
  • 跟踪市场趋势和竞争对手的活动——通过抓取正确的网站,您可以在现场和场外跟踪竞争对手的动作。这不仅包括产品信息,还包括内容、公关文章、涉及比赛的新闻等。网络抓取还可以让您深入了解市场趋势——什么是热门以及事情的发展方向。
  • 为销售和招聘生成潜在客户——另一个用例是抓取各种公开可用的资源,例如 YellowPages、LinkedIn 和职位发布,以寻找商业潜在客户。公司使用他们提取的数据来建立潜在员工和客户的复杂档案:姓名、职位、薪水、地点等。
  • 保护品牌并监控其声誉——品牌保护需要跟踪整个网络上的产品和品牌提及;你必须寻找假冒和未经授权的用途。工作量很大,而且您无法真正手动完成。声誉监控也是如此——您必须观看社交媒体、评论网站、新闻文章、论坛和其他公共场所。因此,营销人员经常搜索 Instagram、Facebook、Reddit 和其他来源,以了解他们在线品牌的动态。

为工作选择最佳的网页抓取工具

市场上不乏网络抓取工具。如果您愿意,您甚至可以使用 Microsoft Excel 进行抓取。你应该吗?可能不是。因此,这里有一些比较流行的网页抓取工具,分为几类。 

网页抓取框架

这些是完整的网络抓取工具集,涵盖了旅程的每个部分:抓取、解析,然后以您选择的格式存储数据。 

  • Scrapy – 用于复杂项目的成熟网络爬取和抓取框架。基于Python,可扩展,支持代理,数据解析,兼容其他Python库(如BeautifulSoup)。良好的文档,但对于初学者来说相对难以使用。没有开箱即用的 JavaScript 支持。
  • Selenium – 一个主要为自动化测试而构建的框架。支持多种编程语言,如 C#、Java、Python 等。可以很好地处理 JavaScript,但比 Scrapy 更慢且可扩展性更差。最适合较小的网络抓取项目。 
  • Apify SDK – 一个用于抓取、抓取和解析 Web 数据的平台。称自己为 Javascript 的 Scrapy。非常可扩展(集成 Cheerio 和 Puppeteer),支持代理,并针对大规模和高性能抓取需求量身定制。提供广泛的文档、使用示例,甚至是现成的刮​​板。 

网页抓取库

Web 抓取库是控制 Web 抓取过程的一个或多个方面的元素。它们本身通常是不够的,需要其他工具才能获得完整的体验。 

  • Beautiful Soup – 基于 Python 的解析器。流行且易于使用,但实际上需要其他库(如请求)从网络上抓取数据。 
  • Requests – 一个基于 Python 的 HTTP 库,用于下载数据。易于使用,具有会话持久性、SSL 验证、连接超时和代理支持等功能。 
  • lxml – 另一个基于 Python 的 HTTP 和 XML 解析器。与美汤相比,它的性能更好,但也更容易坏。也许是大型项目的更好选择。奇怪的是,lxml 包含一个对 Beautiful Soup 的回退,以防万一它无法提供结果。 
  • Cheerio – node.JS 的 XML 和 HTML 解析器。该库宣称自己快速、非常灵活,并以一种有意义的方式遵循熟悉的 qQuery 约定。
  • Puppeteer – 用于控制无头 Chromium 浏览器的 node.JS API。在 Chromium 开发人员的支持下,它正在成为抓取大量 Javascript 网站的越来越流行的选择。

现成的网页抓取工具

这些就像网络抓取框架,但更简单——一切都已经为你配置好了,并包装在一个漂亮的用户界面中。下面的一些工具可以让你在没有任何编程知识的情况下成功抓取。然而,他们的视觉控制和对初学者的关注可能使他们不太适合严肃的项目。

  • Octoparse – 适用于 Windows 和 macOS 的点击式抓取工具。处理 JavaScript,支持定时抓取、代理,并允许为不同的网站构建模板。包括一个没有请求限制但并发性非常有限的免费层。以 .json、.csv、.xls 和 HTML 格式导出数据。
  • ParseHub – 另一个在许多方面类似于 Octoparse 的可视化网络爬虫。支持任务调度、多模板、IP轮换。每次运行的抓取页面数收费。以相同的格式导出。
  • PhantomBuster – 为营销人员和其他对计算机不太友好的人提供的另一种无代码自动化工具。允许创建工作流,不仅可以抓取数据,还可以自动执行重复性任务:自动点赞帖子、发送消息等。在云端工作,以 CSV 和 JSON 格式导出。有趣的是,定价基于刮板运行时间。 

网页抓取最佳实践

以下是一些网络抓取技巧和最佳实践,可帮助您的项目取得成功。

尊重你正在抓取的网站

大多数网站都有 robots.txt 文件。它给出了爬虫可以访问哪些内容以及应该避免哪些内容的说明。虽然您可以忽略 robots.txt – 许多抓取工具都会这样做 – 但您不应该这样做。这损害了已经可疑的网络抓取声誉,并导致网站实施进一步的限制。

另一个提示是不要让网站的请求超载,尤其是在处理较小的域时。对于您应该提出多少请求,没有硬性规定;您必须根据域自行衡量。此外,请尝试在非高峰时段进行抓取,例如在网站服务器负载较少的夜间。

维护您的网络抓取工具

网页抓取需要持续维护。如果您自己构建了一个刮刀,它可能是拼凑在一起的工具。因此,可以合理地预期迟早一个或多个组件会出现故障并需要您的注意。 

请注意,网站对于防止这种情况发生没有多大帮助。相反:一些目标会故意更改 URL 或页面结构(例如 HTML 标记)以破坏您的抓取工具。您必须投入时间和精力来保持事情顺利进行。  


网页抓取障碍

网络抓取并不容易,一些网站会尽力确保您无法休息。以下是您可能会遇到的一些障碍。

克服障碍

您的抓取工具可能被阻止的原因有多种:它们可能源于它的行为方式,甚至可能是其自身呈现给网站的方式。 

第一条规则是不要从同一个 IP 地址发出太多请求。它会限制你的速率,验证码被轰炸,然后被阻止。轮换代理可以帮助您避免这种结果。但即便如此,你也不应该只是盲目地一个接一个地发出请求——修改你的爬取模式和请求频率,让你的爬虫动作更自然。 

另一个重要的部分是用户代理 – 您与网站的连接请求一起发送的 HTTP 标头元素。仅仅包含一个用户代理是不够的;它应该真实地模仿真实浏览器的配置。还需要不时轮换用户代理以像普通用户一样行事。

然后是浏览器指纹识别——关于您和您的计算机的信息编​​码在您的浏览器中。小型网站很少使用指纹技术。但是,如果您一直因为它们而遇到问题,您可能希望使用无头浏览器来模拟真实的用户行为。 

避免验证码提示

验证码挑战会极大地阻碍您的网络抓取工作。它们可能会被触发,因为您使用数据中心代理或标记的住宅 IP 太快地发出太多请求。现代验证码还能够监控用户行为,并在他们发现异常时出现。 

处理它们的一种方法是使用 验证码解决服务或简单地轮换您的 IP 地址。另一种方法是首先防止出现挑战。这是一个更好地模仿人类行为,限制和错开你的爬虫发出的请求数量的问题。

抓取 JavaScript 繁重的网站

与常规网站相比,依赖 JavaScript 运行或启用某些元素的网站是完全不同的野兽。JS 带来了指纹检查、延迟加载和其他让爬虫的生活变得悲惨的功能。如果可以的话,你应该避免它。

如果您打算使用 JavaScript 抓取网站,并且想自己动手,那是完全有可能的。您应该寻找一个无头浏览器。Selenium 是一种流行的选择,尽管越来越多的开发人员在 node.js 上转向 Puppeteer。


网页抓取的合法性

网络抓取并不是一件非常受欢迎甚至不道德的事情。抓取工具经常忽略网站的服务条款,以过多的请求关闭其服务器,甚至占用他们抓取的数据以启动竞争服务。难怪许多网站如此热衷于阻止任何可见的爬虫或爬虫(当然,搜索引擎除外)。 

尽管如此,网络抓取本身是合法的,但有一些限制。多年来,发生了许多具有里程碑意义的案件。他们已经确定,只要信息是公开的并且不受版权保护,网络抓取网站是可以的。不过,最好联系您的律师以确保您没有违反任何法律。

blank

Written by 爬取 大师