抓取网页数据违法吗(基于云平台的网页数据架构使用AWS(AmazonWeb))

优采云 发布时间: 2022-01-06 06:14

  抓取网页数据违法吗(基于云平台的网页数据架构使用AWS(AmazonWeb))

  范顺丽和周益民

  摘要:随着网络数据的快速增长,网络数据采集在处理大量数据时遇到了一些挑战,如数据存储量大、计算能力强、数据提取的可靠性等。提出了一种基于云平台的网络数据采集架构。该架构使用AWS(亚马逊网络服务)作为云平台,按需配置计算资源和数据存储;Selenium 用作 Web 自动化工具,调用 WebDriver API 来模拟用户对浏览器的使用。通过实验,我们将该架构与其他基于云的网络爬取架构进行了比较,并分析了其优势。

  关键词:AWS;网页抓取;大数据; 硒

  中文图书馆分类号:TP311.5 文献标记代码:A 文章 序号:1006-8228 (2018)09-21-04

  摘要:随着互联网数据的快速增长,网页抓取在处理大量数据时遇到了许多挑战,例如大量的数据存储、对密集计算能力的需求以及数据提取的可靠性。因此,提出了一种基于云平台的网页抓取架构。该架构使用AWS(亚马逊网络服务)作为云平台,按需配置计算资源和数据存储。Selenium 是一个网页自动化工具;支持的WebDriver API 模拟用户使用浏览器的过程。通过实验,对比了该架构与其他基于云的网页抓取架构的差异,分析了其优势。

  关键词:AWS;网页抓取;大数据; 硒

  0 前言

  互联网提供了大量的数据集,但很多数据都嵌入在网页的结构和样式中[1]。从网页中提取可用信息,挖掘其潜在价值,使其在金融、数据分析等科学领域发挥重要作用。目前,大多数现有的解决方案主要集中在Web数据采集。数据采集是任何与数据科学相关的研发的前期工作,而这只是大数据的第一步。因此,对于数据科学领域来说,提取网络数据并将其应用到数据科学领域是非常重要的。

  互联网上的信息大多以HTML文档的形式呈现,而这些数据都是非结构化数据[2]。由于非结构化数据不遵循任何数据模型,因此信息提取并不容易。网页数据提取的过程包括:网页数据分析、过滤、格式化结果和存储。在分布式计算领域,BeautifulSoup、Requests、Scrapy[3]等各种库都可以处理大量的网页爬取,但只能处理静态页面。因此,选择Selenium作为网页自动化工具,使用Python的HTMLParser库从HTML中提取数据[4]。使用 Amazon Web Services 的 EC2(弹性计算云)作为云平台。选择 EC2 的原因是它的灵活性。它可以创造,

  1 简介

  随着软件行业的发展,网络数据采集也经历了不同的发展阶段,从最早的人工复制整理数据到今天的云计算大数据采集,每一个行业技术所有的创新都伴随着硬件和软件的巨大进步和发展[5]。云计算通过高度密集的计算能力和支持弹性资源,使其成为个体企业以小资源开始自己的网络爬虫的最佳选择。下面是一些基于云平台的网络爬虫。

  1.1 Import.io

  Import.io 是一个基于云的平台,无需编码即可从不同的网站 抓取网页,并将所有提取的数据存储在其云服务器上。它允许将数据下载为 CSV、Excel、Google Sheets、JSON 或通过 API 访问。其独特的功能包括自动数据和图像提取、自动页面链接、监控、调度和无需编码。

  1.2 WebScraper.io

  WebScraper.io 是另一个可视化的网页抓取平台,它提供了两种方式:Web Scraper 和 Web Scraper Extension。对于谷歌 Chrome 浏览器,Web Scraper Extension 工具是免费使用的,用户可以创建站点地图并指定如何抓取它。对于基于云的 Web Scraper,其价格取决于要爬取的 URL 数量。

  1.3 Scrapy

  Scrapy 是一个免费的、开源的、协作的网页抓取框架,它通过编写代码和调用 API 来提取网页数据。Scrapy 是用 Python 编写的,可以部署在 Scrapy 云中,并且可以按需扩展[6]。其特点是快速、简单、可扩展等。

  以上解决方案主要针对Web数据的采集,这只是大数据的第一步。针对大数据的进一步处理,构建了基于云的网页抓取框架(Cloud-Scraper)。

  2 系统设计

  2.1 Scraper 简介

  图 1 显示了传统的 Scraper 概览。客户端为 ScrapeHub 提供 URL 和网络爬取配置。ScrapeHub 程序启动、处理和监控系统中的所有任务。它是用 Python 编写的。然后 ScrapeHub 启动 Scrape Engine 任务,Scrape Engine 初始化一个网页,使用 Selenium 库将网页转换为所需的状态,并使用 Requests 库对其进行解析。不同的爬虫可能使用不同的库来解析和初始化网页。这里只提到Selenium和Requests,所有数据都存储在数据库中。该模型代表了按顺序获取网页数据的传统方法。一次只能获取一个站点,并且在给定的时间段内只能获取有限的数据。通过添加更多的计算和存储资源,

  2.2 Cloud-Scraper 设计

  使用Amazon Elastic Computing Cloud(EC2),通过Simple Queue Service (SQS)和Simple Storage Service(S3)[7])可以解决上述问题。Amazon S3用于存储Amazon机器镜像,可以根据需要创建任意数量的EC2实例,既经济又灵活。图2展示了Cloud-Scraper的架构,该架构的前端是一个Web浏览器,通过REST API连接到Amazon Web Server。 ScrapeHub in the cloud 会处理所有客户端的爬取请求和处理监控事件,使用Amazon SQS维护一个要爬取的URL列表,Amazon SQS处理两个队列,一个是请求队列,一个是响应队列。 Engine 是一个 URL,用作输入和抓取网页内容的程序,每个 EC2 实例都是一个运行 Scrape Engine 的虚拟机。DynamoDB 是一个免费的开源 NoSQL 数据库,可以为提取的数据提供存储 [8]。

  图 3 展示了 Cloud-Scraper 的网络爬取过程。当用户向 Cloud-Scraper 发送爬取请求时,该请求将转到 ScrapeHub。该请求收录两条信息:URL 和爬网配置。首先,ScrapeHub 将 URL 分成多个块转发到 S3 存储,同时创建多个 EC2 实例,并创建 SQS 请求队列和响应队列。ScrapeHub 借助 SQS 请求队列向 EC2 实例发送服务请求,请求的处理顺序以先进先出(FIFO)的调度方式完成。ScrapeHub创建的请求队列上的每个请求都有一个特定的ID,通过响应队列持续监控整体的爬取进度,爬取结果存储在DynamoDB中。

  Amazon EMR(Amazon Elastic MapReduce)是一种网络服务[9],采用Hadoop处理方式,结合Amazon EC2,可以轻松高效地处理大量数据。Cloud-Scraper 集成了大数据应用,可以对爬取的网页数据进行可视化和分析。

  3 实验分析

  图 4 显示了使用不同解决方案完成网页抓取所需的时间,包括来自云端的请求时间、排队时间、处理时间和响应时间。X轴代表网址数,Y轴代表完成网页抓取的时间。图中上两行表示使用单机和单机多线程的爬取完成时间,下两行表示使用20台机器和20台带有Amazon EC2 T2实例的机器完成爬取。所需的时间。可以看出,使用单节点本地机最多可以抓取4000个网页数据,这是服务器限制单个IP在有限时间内访问有限数据造成的。在单台机器上执行并发线程也是如此。虽然计算速度比顺序节点快很多,但是爬取效率随着URL的增加而下降。下面两行爬取完成时间大致呈线性,说明随着URL数量的逐渐增加,Cloud-Scraper可以正常运行。可以推断,Cloud-Scraper 架构是可扩展的,可以根据爬取的 URL 数量增加 EC2 实例。

  许多基于云的网页抓取解决方案可用,但大多数是商业性的,其工作模式不公开。因此,与一些现有的开源框架进行比较,例如 Scrapy 和 Import.io。图 5 展示了 Cloud-Scraper 和其他使用机器实例的基于云的平台之间的比较。与其他框架相比,Cloud-Scraper 架构是分布式的,对可以使用的计算资源实例没有限制。借助亚马逊云中的DynamoDB,可以灵活使用所有资源。由于Selenium的使用可能会延迟一段时间,所以爬取完成时间比Import.io要长,但是缺点已经被优点超越了。Selenium 提供更高的可靠性和对人类行为的模仿。效果较好[10]。在数据提取方面,其性能可媲美目前市面上其他基于云的网络爬虫架构,也可与其他大数据应用结合使用。最后,捕获的数据将进入大数据处理。

  Cloud-Scraper的4大优势

  Cloud-Scraper 有很多优点。其中一些描述如下:

  ⑴ 成本效益:使用云资源按使用付费模式,可以以低廉的价格使用云资源,并且可以按需扩容或缩容,比维护自己的云更便宜[11]。云供应商几乎可以提供从存储到处理能力所需的一切,让云计算变得更容易。购买自己的资源将花费大量成本来维持和扩大需求。

  ⑵ 可扩展性:云提供商根据需要提供可靠的计算机,并且可以根据需要创建和使用这些计算机的多个实例。供应商提供了大量的平台选择选项,您可以根据计算的性能要求选择正确的处理能力[12]。

  ⑶ 大数据应用集成:任何大数据应用都需要四种基本结构——存储、处理、分析软件和网络。DynamoDB 是一种 NoSQL 数据库,可以提供更高的可用性,从而提供更好的性能。分析软件可以根据用户的需求在该架构上进行编程,借助亚马逊的EC2,可以在数量和计算能力上进行扩展。虽然这种架构不能满足所有大数据要求,但进一步的程序集成和修改可以使其对大数据任务更加健壮。

  5 结论

  本文提出了一种基于云平台的新型网络爬虫架构。亚马逊的云服务为分布式环境中的计算和存储提供了弹性资源,为网络爬取提供了更好的平台。通过实验测试该架构的可扩展性,并与其他网页抓取架构进行简单对比,分析其优势,包括Selenium的使用和大数据应用的集成。此外,也可以使用其他云服务来实现上述架构。

  参考:

  [1] 魏冬梅, 何忠秀, 唐建梅. 基于Python的Web信息获取方法研究[J].软件指南,2018.17 (1): 41-43

  [2] 郎博,张博宇.面向大数据的非结构化数据管理平台关键技术[J]. 信息技术与标准化,2013.10:53-56

  [3] 刘宇,郑承焕.基于Scrapy的Deep Web Crawler研究[J]. 软件,2017.38(7):111-114

  [4] 齐鹏,李银峰,宋雨薇.基于Python的Web Data采集技术[J]. 电子技术, 2012.25 (11): 118-120

  [5] 凯文。网页资料采集发展历程及未来前景[EB/OL].

  [6] 刘硕.精通Scrapy网络爬虫[M]. 清华大学出版社,2017.

  [7] 许鸿飞.云计算安全问题初探——基于Amazon Dynamo和EC2的架构分析[J]. 计算机 CD 软件与应用,2013.16 (17): 21-22

  [8]孙宝华.基于Dynamo的存储机制研究[D]. 西安电子科技大学,2013.

  [9] 小龙腾.如何为 Hadoop 选择最灵活的 MapReduce 框架 [EB/OL].

  [10] 杜斌. 基于Selenium的定向网络爬虫的设计与实*敏*感*词*融科技时代,2016.7: 35-39

  [11] Jackson KR、Muriki K、Thomas RC 等。亚马逊AWS云上超新星工厂的性能与成本分析[J]. 科学规划,2011.19:2-3

  [12] Juan JD, Prodan R. Amazon EC2 中的多目标工作流调度[J]. 集群计算,2014.17(2):169-189

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线