excel抓取网页数据(从电子商务店铺*敏*感*词*提取产品数据时所学到的经验教训挑战)

优采云 发布时间: 2021-10-03 05:07

  excel抓取网页数据(从电子商务店铺*敏*感*词*提取产品数据时所学到的经验教训挑战)

  现在从互联网上获取数据似乎很容易。有很多开源的库和框架,可视化爬虫工具和数据提取工具,可以很方便的从一个网站中抓取数据。然而,当你想*敏*感*词*搜索网站时,很快就变得非常棘手。

  在本文中,我们将与您分享自 2010 年以来在 Scrapinghub 的帮助下从 1000 亿产品页面中抓取数据的经验教训,并让您深入了解从电子商务商店中提取产品数据时所面临的挑战。*敏*感*词*。,并与您分享一些应对这些挑战的最佳实践。

  Scrapinghub 成立于 2010 年,是最好的数据提取公司之一,Scrapy-Scrapy 的创建者是当今最强大和最受欢迎的网络抓取框架。目前,Scrapinghub 每月为全球许多大型电子商务公司抓取超过 80 亿个页面(其中 30 亿个是产品页面)。

  *敏*感*词*网络爬虫的要点

  不同于标准的网络爬虫应用,电子商务产品数据的*敏*感*词*爬取将面临一系列独特的挑战,这使得网络爬行变得异常困难。

  本质上,这些困难可以归结为两个方面:速度和数据质量。

  通常时间是一个限制性的约束,所以*敏*感*词*的抓取需要网络爬虫以非常高的速度抓取页面,并且不会影响数据质量。这种对速度的要求使得捕获大量产品数据变得非常具有挑战性。

  

  挑战一:乱七八糟的网页格式

  凌乱多变的网页格式可能是最常见的挑战,也可能不是最有趣的挑战,但却是迄今为止*敏*感*词*数据提取面临的最大挑战。这个挑战的关键不是复杂性,而是需要大量的时间和资源来应对。

  如果你有过电商店铺爬虫体验,就会知道电商店铺代码杂乱无章是普遍现象。这不仅仅是关于 HTML 格式或偶尔的字符编码问题。多年来,我们遇到了各种各样的问题,比如滥用 HTTP 响应代码、不完整的 JavaScript 或滥用 Ajax:

  这样乱七八糟的代码会让编写爬虫非常痛苦,无法使用爬虫工具或自动提取工具。

  在*敏*感*词*抓取网页时,你不仅需要像这样浏览数百个乱七八糟的网站,还要处理网站的不断更新。一个经验法则是:每 2-3 个月目标 网站 的变化就会废除你的爬虫。

  听起来可能没什么大不了的,但是当你*敏*感*词*地爬行时,这些事故就会累积起来。比如Scrapinghub的一个大型电商项目,爬虫大约有4000个,需要爬取1000个电商网站,这意味着他们每天有20-30个爬虫失败。

  从区域和多语言网站布局变化来看,A/B拆分测试和打包/定价变化往往会给爬虫带来问题。

  没有捷径

  不幸的是,这些问题没有灵丹妙药。在很多情况下,我们只能随着规模的扩大投入更多的资源。以上述项目为例,负责该项目的团队共有18名爬虫工程师和3名专职QA,以确保客户始终拥有可靠的数据。

  然而,有了经验,团队可以学习如何创建更强大的爬虫来检测和处理 网站 格式的各种奇怪的技巧。

  最佳实践不是针对目标网站的所有可能的布局都一一编写爬虫,而是从一个产品中提取的爬虫可以处理不同页面布局所使用的所有可能的规则和方案。爬虫的配置越多越好。

  虽然这些做法会使爬虫变得更加复杂(我们的一些爬虫有几千行长),但它们可以确保爬虫更容易维护。

  由于大多数公司每天都需要提取产品数据,我们不能花几天时间等待工程团队修改损坏的爬虫。对于这种情况,Scrapinghub 使用基于数据提取工具的机器学习。我们开发了这个机器学习模型作为备份,直到爬虫被修复。这个基于机器学习的提取工具可以自动识别目标网站的目标字段(产品名称、价格、货币、图片、SKU等),并返回想要的结果。

  挑战 2:可扩展架构

  您将面临的下一个挑战是构建一个爬虫基础设施,该基础设施可以随着每天请求数量的增加而扩展,而不会降低性能。

  在*敏*感*词*提取产品数据时,简单的网络爬虫只能连续爬取数据,不能提取。通常,连续的网络爬虫会一个接一个地循环发送请求,每个请求需要 2-3 秒才能完成。

  如果爬虫每天少于40000个请求(每2秒发送一个请求,意味着每天可以发送43200个请求),这种方法是可以的。但是,一旦请求数量超过这个数量,就需要切换到每天可以发送数百万个请求而不降低性能的爬虫架构。

  如上所述,速度是*敏*感*词*抓取产品数据的关键。您需要确保在特定时间段(通常为一天)内找到并抓取所有需要的产品页面。为此,您需要执行以下操作:

  将产品搜索与产品提取分开

  为了*敏*感*词*提取产品数据,您需要将产品搜索爬虫与产品提取爬虫分开。

  产品搜索爬虫的目标应该是找到目标产品类别(或“货架”),并将产品的 URL 保存在该类别下,以供产品提取爬虫使用。当产品搜索爬虫将产品 URL 添加到队列中时,产品提取爬虫会从茶叶页面抓取目标数据。

  这项工作可以借助流行的爬虫工具,例如Scrapinghub 开发的开源爬虫工具Frontera。虽然 Frontera 最初是为在 Scrapy 中使用而设计的,但它是完全不受限制的,可以与任何其他爬虫框架或独立项目一起使用。在本文中,我们将分享如何使用 Frontera 从 HackerNews 中挖掘数据。

  为产品提取分配更多资源

  由于每个产品类别“货架”可以收录10到100个产品,并且与提取产品URL相比,提取产品数据需要更多资源,因此搜索爬虫通常比产品提取爬虫更快。在这种情况下,您需要为每个搜索爬虫配备多个提取爬虫。经验法则是:每 100,000 个页面需要创建一个单独的提取爬虫。

  挑战 3:保持吞吐量性能

  *敏*感*词*抢车很像一级方程式,我们的目标是提高车速,尽可能减轻车重,从发动机榨出最后一部分马力。*敏*感*词*的网络爬虫也是如此。

  在提取大量数据时,我们必须在现有硬件资源的基础上,尽可能地找到一种可以最小化循环时间并最大化爬虫性能的方法。所有这些都必须减少每个请求的时间,甚至几毫秒。

  为此,您的团队需要深入了解网络抓取框架、代理管理和正在使用的硬件,以便更好地调整它们以获得最佳性能。您还需要注意:

  履带效率

  在*敏*感*词*抓取时,我们应该始终努力在最少的请求中提取所需的确切数据。任何额外的请求或数据提取都会降低爬取网站的速度。在设计爬虫时,请记住以下几点:

  挑战四:反机器人策略

  在*敏*感*词*爬取电商网站时,你肯定会遇到使用反机器人策略的网站。

  对于大多数小网站来说,他们的反机器人策略是非常基础的(IP禁止过度请求)。但是对于亚马逊网站这样的大型电商公司,他们会使用非常成熟的反机器人策略,比如Distil Networks、Incapsula或者Akamai,这会让数据提取变得更加困难。

  演戏

  请记住,大型产品数据抓取项目最重要的要求是使用代理IP。在*敏*感*词*爬取中,需要一个相当大的代理列表,并且需要实现必要的IP轮换、请求限制、会话管理、黑名单逻辑,防止代理被阻塞。

  除非您拥有庞大的管理代理团队,否则您应该将这部分爬行工作外包。外面有大量的代理服务,可以提供各种级别的服务。

  但是,我们建议您使用代理为代理配置提供单一端点并隐藏管理代理的复杂性。*敏*感*词*爬取是非常耗费资源的,更不用说需要通过开发和维护建立自己内部的代理管理基础设施。

  大多数大型电子商务公司都使用这种方法。许多世界上最大的电子商务公司都使用 Scrapinghub 开发的智能下载器 Crawlera 来外包代理管理。如果您的爬虫每天需要发出 2000 万个请求,那么专注于捕获比代理管理更有意义。

  超越代理

  不幸的是,仅使用代理服务还不足以确保可以绕过大型电子商务网站的反僵尸策略。越来越多的网站开始使用成熟的反机器人策略来监控爬虫行为并检测请求是否来自人类访问者。

  这些反机器人策略不仅会使电商网站的爬行变得困难,如果处理不当,与它们的纠缠将严重影响爬虫的性能。

  这些反机器人策略大多使用 JavaScript 来确定请求是来自爬虫还是来自人类(JavaScript 引擎检查、字体枚举、WebGL、Canvas 等)。

  但是前面提到,在*敏*感*词*抓取数据时,我们希望使用无头的脚本化浏览器(如Splash或Puppeteer等)。页面上的 JavaScript 渲染会给资源带来压力并降低抓取速度。网站。

  这意味着,为了保证你的爬虫能够达到提供日常产品数据所需的吞吐量,你通常需要努力反击网站上使用的机器人策略,并且将爬虫设计成使用无头它们可以在某些浏览器的情况下也会被打败。

  挑战 5:数据质量

  从数据科学家的角度来看,网络抓取项目最重要的考虑因素是提取数据的质量。*敏*感*词*爬取更注重数据的质量。

  如果每天需要提取数百万个数据点,则无法手动验证所有数据是否干净完整。大量的*敏*感*词*数据或不完整的数据会进入数据源,破坏数据分析工作。

  当商店有多个版本(不同语言、地区等)或从不同商店抓取数据时,数据质量尤为重要。

  除了仔细的QA流程,在创建爬虫的设计阶段,对爬虫的代码进行相互审查和测试,可以确保以最可靠的方式提取所需的数据。确保高质量数据的最佳方法是开发自动化 QA 监控系统。

  作为数据提取项目的一部分,您需要规划和开发一个监控系统,以提醒您数据不一致和抓取错误。在 Scrapinghub,我们开发了用于检测的机器学习算法:

  总结

  如您所见,*敏*感*词*抓取产品数据需要一系列独特的挑战。希望这个 文章 可以让您更好地了解这些挑战以及如何解决它们。

  在 Scrapinghub,我们专注于将非结构化 Web 数据转换为结构化数据。如果您对本文有任何想法,请在下面发表评论。

  文字:Ian Kerins 翻译:Crescent Moon/CSDN (CSDNnews)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线