前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >电商网站的大规模网页抓取指南

电商网站的大规模网页抓取指南

原创
作者头像
用户7850017
发布2021-11-26 11:31:27
7470
发布2021-11-26 11:31:27
举报

电商网站的大规模网页抓取

与小型项目相比,大规模的网页抓取带来了一系列截然不同的挑战,例如基础结构搭建、管理资源成本、绕过爬虫检测措施等。

本文将指导您完成大规模数据收集,并以电商领域为重点。

网页抓取基础设施

搭建和管理网页抓取基础结构是首要任务之一。当然,我们假设您已经建立了一个数据收集方法(又称爬虫)。

一般的网络抓取流程如下:

简而言之,您首先要抓取一些目标。对于大规模的操作,不用代理的抓取无法持续太久,因为很快就会被网站屏蔽。代理是大规模数据收集的重要元素。

大规模数据收集的最佳做法是采用多个代理解决方案,甚至是多个供应商。我们先从代理供应商说起。

Part 1 选择一个代理供应商

选择合适的代理供应商非常重要,因为这将直接影响抓取程序。

如果您选择合作的代理机构不靠谱,您的内部数据检索工具使用效果就不理想。

Part 2 选择一个代理类型

如果您只想找一种适用于电商数据收集的代理类型,请考虑住宅代理。这种代理因为其性质而不太可能被屏蔽,并提供了覆盖范围广的庞大代理池。

Part 3 绕过安全措施

电商网页都会部署一定的安全措施,用来阻止不受欢迎的爬虫。一些常用的方法如下:

IP 识别。服务器可以分辨 IP 是来自数据中心还是住宅。

CAPTCHA 验证码。这是一种问答式测试,通常要求用户填写正确的密码或识别图片中的物体。

Cookie。普通用户很少直接进入某个特定产品页面。

浏览器指纹识别。这指的是出于识别目的而收集的关于计算机设备的信息。

标头。网站可以获悉用户的地理位置、时区、语言等。

与自然用户行为不一致。

Part 4 关于存储的微妙艺术

您收集的所有数据都需要保存在某个地方,所以大规模的抓取自然需要大量的存储资源。

那么,当数据的接收速度与处理速度之间存在差异时,通常会使用缓冲器。

#为数据传输创建一个缓冲区

为了用通俗的语言解释缓冲,我们以办公室为例。假设您正坐在办公室里工作,不时有人过来在您的一堆文件中加入新的任务。您完成了正在进行的任务后,将转到下一个指定的任务。那么这堆文件就是一个缓冲区。如果堆得太高,就会翻倒,所以您必须限制里面的文件页数。这就是缓冲区的容量,只要超过这个限制就会溢出。 如果您在等待另一个服务来接受信息,就需要一个缓冲区来查看有多少信息正在传输。这样才能避免溢出,就像避免那堆文件翻倒一样。如果缓冲区溢出,您就不得不舍弃一些工作。在这种情况下,您可以有三种选择:

1. 舍弃最早存储在缓冲区的数据 

2. 舍弃最新添加的数据

3. 停止数据收集过程以阻止溢出

然而,如果您选择停止抓取过程,那么有些工作就要延期完成,等到恢复正常后,就需要进行更多的抓取。

#数据库存储服务

如果您想处理传入数据并转换为可读的格式(如 JSON),应该怎么办?从这个角度来看,其实不需要原始数据。也就是说,您可以将信息保存在短期存储器内。那如果您需要 HTML 文件和处理后的数据,又该怎么办?长期存储器将是最佳选择。

不过,我们讨论的是大规模的数据收集,因此建议同时使用这两种方法。我们的推荐做法如下所示:

在这种情况下,由于短期存储器的运行速度非常快,可以处理大量的请求,因此将用于吸收抓取来的大量数据。通过这一解决方案,您既能将数据送入解析器,又能将未处理的 HTML 文件放入长期存储器。

您也可以只使用长期存储器作为缓冲区。但这样一来,您就需要投入更多的资源,以确保所有的进程都能按时完成。

以下是适用短期和长期存储器的一些服务:

1. 长期。MySQL、BigQuery、Cassandra、Hadoop 等。

这些解决方案通常以永久存储的方式(硬盘而不是内存/RAM)保存数据。因为信息预计会保留较长时间,所以这些解决方案配备了一些工具,可以从整个数据集中筛选出您需要的数据。

2.   短期。Apache Kafka、RabbitMQ、Redis

这些存储器在数据筛选方面的功能很有限,因此一般不适合长期保存数据。但另一方面,这些存储器运行速度极快,虽然牺牲了相当多的功能,但随时可用,从而可以实现大规模操作所需的性能。

当然,您也可以完全避免存储过程。我们提供的 Real-Time Crawler专为高负荷数据检索操作定制的高级抓取器,尤其适用于抓取电商产品页面。它的好处之一在于,可以为您免除数据存储的烦恼,因为您只需要为它提供一个网址。Real-Time Crawler 自行完成整个抓取、存储和处理工作,返回给您的都是有用的数据(HTML 或 JSON)。

Part 5 处理抓取的数据

确定了存储需求后,就必须考虑如何处理,也就是解析。数据解析过程是指分析传入信息,并将相关片段提取为适用于后续处理的格式。数据解析是网页抓取中的一个关键步骤。

然而,就像我们到目前为止在这篇博文中讨论的所有内容一样,解析并不是那么简单。在小规模下,构建和维护解析器都是非常简单的。但是对于大规模的网页抓取而言,情况就复杂多了。

#大规模数据解析的难题

●目标网站可能会改变其网页布局

●使用第三方解析器时,进程可能被迫停止

●如果您使用第三方服务,就需要多个服务

●不同服务提供的数据集在结构上各不相同

●如果您使用自己的解析器,就需要大量解析器

●当解析器进程中止时,您的缓冲区可能会溢出

总而言之,您要么构建和维护自己的解析器,要么通过第三方解决方案获取解析器。对于大规模操作,我们建议您尝试上述两种方法中的任一种。将资源分散投资到多个优秀的第三方解决方案(使服务多样化),可以确保网页抓取操作顺利进行。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档