电商网站的大规模网页抓取指南
电商网站的大规模网页抓取
与小型项目相比,大规模的网页抓取带来了一系列截然不同的挑战,例如基础结构搭建、管理资源成本、绕过爬虫检测措施等。
本文将指导您完成大规模数据收集,并以电商领域为重点。
网页抓取基础设施
搭建和管理网页抓取基础结构是首要任务之一。当然,我们假设您已经建立了一个数据收集方法(又称爬虫)。
一般的网络抓取流程如下:
简而言之,您首先要抓取一些目标。对于大规模的操作,不用代理的抓取无法持续太久,因为很快就会被网站屏蔽。代理是大规模数据收集的重要元素。
大规模数据收集的最佳做法是采用多个代理解决方案,甚至是多个供应商。我们先从代理供应商说起。
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 处理抓取的数据
确定了存储需求后,就必须考虑如何处理,也就是解析。数据解析过程是指分析传入信息,并将相关片段提取为适用于后续处理的格式。数据解析是网页抓取中的一个关键步骤。
然而,就像我们到目前为止在这篇博文中讨论的所有内容一样,解析并不是那么简单。在小规模下,构建和维护解析器都是非常简单的。但是对于大规模的网页抓取而言,情况就复杂多了。
#大规模数据解析的难题
●目标网站可能会改变其网页布局
●使用第三方解析器时,进程可能被迫停止
●如果您使用第三方服务,就需要多个服务
●不同服务提供的数据集在结构上各不相同
●如果您使用自己的解析器,就需要大量解析器
●当解析器进程中止时,您的缓冲区可能会溢出
总而言之,您要么构建和维护自己的解析器,要么通过第三方解决方案获取解析器。对于大规模操作,我们建议您尝试上述两种方法中的任一种。将资源分散投资到多个优秀的第三方解决方案(使服务多样化),可以确保网页抓取操作顺利进行。
相关文章
- 从本体论开始说起——运营商关系图谱的构建及应用
- 如何成为一名数据科学家?
- 从未见过的堂兄杀了人,你的DNA是关键证据
- 20个安全可靠的免费数据源,各领域数据任你挑
- 20个安全可靠的免费数据源,各领域数据任你挑
- 阿里云李飞飞:All in Cloud时代,云原生数据库优势明显
- 基于Hadoop生态系统的一高性能数据存储格式CarbonData(性能篇)
- 大数据告诉你:10年漫威,到底有多少角色
- TigerGraph:实时图数据库助力金融风控升级
- Splunk利用Splunk Connected Experiences和Splunk Business Flow 扩大数据访问
- 大数据开发常见的9种数据分析手段
- 以免在景区看人,我爬了5W条全国景点门票数据...
- 【实战解析】基于HBase的大数据存储在京东的应用场景
- 数据科学家告诉你哪些计算机科学书籍是你应该看的
- Kafka作为大数据的核心技术,你了解多少?
- Spring Boot 整合 Redis 实现缓存操作
- 大数据学习必须掌握的五大核心技术有哪些?
- 基于Antlr在Apache Flink中实现监控规则DSL化的探索实践
- 甲骨文再次被Gartner评为分析型数据管理解决方案魔力象限领导者
- 爬取吴亦凡微博102118条转发数据,扒一扒流量的真假