会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面|手机浏览|联系方式|购物车
Web Scraping or Web Crawling: State of Art, Techniques, Approaches and Application——网络爬取:技术、方法和应用现状
2024-12-26IP属地 湖北0

Int. J. Advance Soft Compu. Appl, Vol. 13, No. 3, November 2021
Print ISSN: 2710-1274, Online ISSN: 2074-8523
Copyright © Al-Zaytoonah University of Jordan (ZUJ)

Abstract: 网络抓取是指使用软件从网站中自动提取数据的过程。网络抓取是一种允许我们从HTML等文本中提取结构化数据的技术,在数据不是以机器可读格式(如JSON或XML)提供的情况下,网络抓取非常有用。网络抓取可用场景(省略)。使用网络抓取程序将产生比手动输入更彻底、更准确、更一致的数据。

本文探讨了什么是网络抓取,它是如何工作的,网络抓取的阶段,技术,它与商业智能、人工智能、数据科学等的关系。如何使用Python语言进行网络抓取,网络抓取的一些主要好处,以及网络抓取的未来可能是什么样子,并特别强调强调伦理和法律问题。

网络抓取与手动对比

        对于绝大多数计算机用户来说,与互联网的交互是通过浏览器访问网站的形式。但这只是冰山一角,有太多有用的原始信息隐藏在视线之外。使用API可以轻松访问大量信息(如果网站提供的话,另一方面,网络抓取或网络爬行要得多,也更有效,可以用来收集和编译数千页或数百万页的数据。——因此,这项技术在商业智能领域很重要。

        数据对企业和组织来说非常重要(重要性)。数据采集是任何数据科学研究和开发的第一阶段(私人、公开、购买三个来源,网站分析、网站抓取和数据组织是在线抓取的三个主要、交织的过程。网络抓取与数据挖掘的不同之处在于:数据挖掘需要数据分析,数据挖掘还需要使用复杂的统计技术,收集数据并不重要。因为有大量工具和库,web抓取通常是一个非常简单的过程。发送具有不同标头和有效负载的自定义HTTP请求的能力是大多数web抓取程序的标准功能。

        第一个公认的抓取器——谷歌:这些抓取器在整个互联网上搜索,扫描每个网页,提取信息,并编制一个可搜索的索引。

        网络抓取软件可以复制人类探索万维网的方式,通过执行成熟的网络浏览器,如Mozilla Firefox或internet explorer。同时,复制人类浏览万维网的另一种方式,它通过低级超文本传输协议(HTTP)。但是,网络抓取可以比人类更准确更快地完成。

        Web抓取是一种将非结构化Web数据转换为结构化数据的技术,这些数据可以在中央电子表格或数据库中保存和分析。这使机器能够在短时间内检索大量数据。大数据环境下的有利性。

        网络抓取在科学和商业上的应用。

         API——网络抓取API是一种基于定制请求的更大规模的Web抓取服务。它通过使用API访问客户的抓取数据,为机构提供结构化数据。Web抓取是程序从互联网获取信息的唯一途径,直到最近出现了API,这是一种特殊的接口,旨在使应用程序和服务器更容易通信。但由于不是每个网站都提供免费API、使用API提供的数据量和数据量非常有限、不关注维护后端API。所以网络抓取策略必不可少。

        数据是从网站中提取的,网站采用使用web浏览器的HTTP协议。网络抓取以相对较低的成本提取不断在线生成的大量数据。正确利用抓取的数据集需要适当的数据预处理和清理。Tarannum(2019)讨论了python中报废数据的清理方法。

        Grasso等人(2013)引入了一种名为OXPath的新的网络抓取工具和语言。OXPath是XPATH标准的扩展,它增加了一些功能,如用户操作(如点击)和通过CSS显示的视觉特征(如颜色)进行过滤。他们还讨论了几个利用OXPATH的项目,例如DIADEM,一种无监督的数据提取工具。

        Gheorghe等人(2018)讨论了网络抓取的现代技术和挑战,如captcha、费率限制,他们还讨论了布加勒斯特公共交通管理局网站上的公共交通数据报废案例研究,以分析公共交通中的问题。

        传统的复制粘贴技术:有效、实用。但不适合大量数据。(Sirisuriya, 2015)

        抓取文本并使用正则表达式:此策略基于UNIX命令或计算机语言的正则表达式匹配功能。(Sirisuriya, 2015)

        使用HTTP编程:用户可以使用这种方法访问静态和动态网页中的数据。可以通过向远程web服务器发出HTTP请求,使用套接字编程来检索数据。(Sirisuriya, 2015)

        HTML解析:半结构化数据查询语言用于解析网页HTML代码以及检索和转换页面内容。

        DOM解析:嵌入一个功能齐全的web浏览器,如Mozilla浏览器或Internet Explorer控件,程序可以访问客户端脚本创建的动态材料。这些浏览器控件还将网页解析为文档对象模型树,应用程序可以从中获取一些页面内容。(Saurkar et al, 2018)

        网页抓取软件:现在有几个工具可以提供自定义的网页抓取。这些程序可以自动识别页面数据结构,或者提供一个记录界面,从而消除了对网络抓取脚本的需求。此外,其中一些软件可以具有脚本功能,可用于提取和转换材料,以及用于抓取数据并将其存储在本地数据库中的数据库接口。(Saurkar et al, 2018)

        基于计算机视觉的网页分析器:通过像人一样对网页进行视觉扫描,计算机视觉和机器学习被用来发现和检索重要信息。(Saurkar et al, 2018)图1中显示了一个非常简单的网络提取示意图

Web Scraping or Web Crawling: State of Art, Techniques, Approaches and Application——网络爬取:技术、方法和应用现状

        网络提取过程分为3个阶段,如图2.

        1、获取阶段(Fetching:必须首先在所谓的获取阶段访问包含相关信息的所需网站,这是通过HTTP协议实现的,HTTP协议是一种用于发送和接收来自网络服务器的请求的互联网协议。浏览器使用类似的方法来获取网页上的材料。在这一步中,curl 2和wget 3等库可以被用于向目标地址(URL)发送HTTP GET请求并获得HTML页面作为响应(Persson,2019

        2、提取阶段(Extraction:在检索HTML页面之后,应该提取重要的数据。这一步使用正则表达式、HTML解析库和XPath查询,称为提取阶段。XML路径语言(XPath)是一种用于在文档中查找信息的工具。(Persson,2019

        3、转换阶段(Transformation:现在只剩下相关的数据,可以将其转换为结构化的格式进行表示或存储。使用存储的数据,我们可以收集信息。(Persson,2019

2.2.1Python for Web Scraping

        选择Python的原因——python流行性、可访问性。阅读简单。

Table.1 comparison of three approaches of web scrapping (Lawson, 2015)

1、正则表达式(Regular expression:正则表达式是一个python包,最初是为Perl编程语言开发的。python处理正则表达式的方式是使用“re”模块。正则表达式通过建立一个我们想在字符串中找到的样品来操作,然后它扫描该字符串的任何匹配项。样品可能看起来很奇怪,因为它包含特殊的字符,这些字符会改变样品的解释方式和我们想要匹配的材料(Uzun,2018)。

理解“样品可能看起来很奇怪,因为它包含特殊的字符,这些字符会改变样品的解释方式和我们想要匹配的材料”

Python正则表达式基本语法

1.字符匹配

在正则表达式中,普通字符表示其本身,例如a表示字符a。如果想要匹配多个字符,则可以使用[]来表示范围,例如[a-z]表示匹配任意小写字母。

2.特殊字符匹配

除了普通字符之外,正则表达式还支持许多特殊字符匹配。例如,.表示任意字符,d表示数字,s表示空白字符,w表示字母、数字或下划线。

3.重复匹配

有时候我们需要匹配多个相同的字符,这时可以使用重复匹配符。例如,*表示匹配0个或多个字符+表示匹配1个或多个字符,?表示匹配0个或1个字符。

4.边界匹配

有时候我们需要匹配字符串的开头或结尾,这时可以使用边界匹配符。例如,^表示匹配字符串的开头位置,$表示匹配字符串的结尾位置。

2、Beautiful Soup

        Beautiful Soup是一个Python包,允许您从Leonard Richardson和其他一些开发人员开发的网页中检索结构化数据。Beautiful Soup用于解析XML和HTML。此外,与正则表达式相比,它更容易使用,因为它导航、检查和更新解析树的步骤更少。Beautiful Soup能够自动将输出文档转换为UTF-8,将传入文档转换为Unicode,因此您不需要跟踪编码,除非文档没有指定编码。

3、Lxml

        Lxml是Python用于XML和HTML处理的速度最快、功能最丰富的库之一。此外,lxml是一个简单易学的工具,并且lxml支持XPath来提取树内容。您可以使用XPath将内容块提取到列表中。此外,如果您以前使用过CSS或XPaths,那么您将不会遇到任何问题。它的原始动力和速度也促成了它在行业中的广泛采用。Lxml是一个非常好的网络抓取工具,但有些人避免使用它,因为它很难安装在某些计算机上(Uzun,2018

        网络抓取涉及两个软件程序的创建和实现:爬行器(crawler)和抓取器(scraper)。爬虫以系统的方式从互联网上下载数据;然后,scraper从下载的数据中提取原始形式的重要信息,对其进行编码,并根据用户定义的结构和格式将其存储在数据库或文件中。然后,这个新文件的评估方式是互联网上最初的数据展示所不允许的。

        以前,这些数据只能在网络浏览器上使用,无法复制。网络抓取使其成为可能,只需几行脚本就可以在短时间内完成。

        两个应用:食品价格研究中使用网络抓取;提取和分析暗网市场的产品供应和价格。

商业智能、人工智能、数据科学、大数据、云计算和网络安全

       

        Web抓取是Web挖掘的一个分支,专注于从Web收集数据。在信息检索、数据提取和数据挖掘三角中,Web挖掘仍然是一个重要的组成部分。在被数据挖掘工具处理之前,从非结构化数据中检索和提取重要信息是该过程中的关键步骤。网络挖掘包括(数据挖掘、信息检索和信息提取)。

        信息检索(IR:它侧重于从各种文档(包括相关文档和不相关文档)的集合中检索文档,通常使用关键字搜索。随着互联网的发展,搜索引擎成为在不同网站上定位数据的主要方法。

        “信息提取”一词指的是人工智能的一个子学科。Internet Explorer(IE)主要关注从非结构化数据中提取有价值的信息。 非结构化数据包括视频、音频、图片和文本。IE的目标是从非结构化数据中提取可用的组件,以便通过语义分类来创建更多有价值的信息。该结果可以应用于其他信息处理任务,例如信息检索和数据挖掘。

        本文讨论了一个基于各种输入标准从互联网上检索个人信息的系统。通过利用人工智能算法,该系统能够区分多个同名人员的信息。(Chamoso et al, 2020)——在人工智能应用实例

        在计算中,机器人是一种在网络(尤其是互联网)上运行的自主软件,可以与其他系统或用户交互。描述如何通过使用更快的搜索算法优化人工智能机器人的内存,以及如何学习用户希望机器人学习的新东西。网络爬行器是一种在网站集合或整个互联网上爬行的机器人。网络爬虫也称为网络蜘蛛。因此,为了让机器人从互联网上收集信息,它必须在网站上爬来爬去,搜集必要的信息。完成在这些任务中,网络爬行器或蜘蛛用于爬行,而网络抓取器是用于抓取

        应用于Twitter ——在自然语言处理、情感分析和机器学习等领域,从社交网络中检索数据是第一步。重要的数据科学活动依赖于历史数据来预测未来的结果。最近的大多数作品都使用了Twitter API,这是一个收集公共信息流的公共平台。提供了一种新的方法来收集历史推文,使用web抓取技术来规避Twitter API的限制。(Hernandez-Suarez et al, 2018)

         应用于社交媒体——从社交媒体中检索用于不同目的的数据,例如使用新冠肺炎新闻故事的网络抓取来创建用于情绪和情绪分析的数据集 (Thota an Elmasri, 2021).

        网络抓取对数据科学重要性——网络包含了大量有趣的数据源,这些数据源是各种主题信息的宝库。令人遗憾的是,目前网络的非结构化性质使得获取和导出这些数据变得困难。与其通过web浏览器的窗口访问网页,不如自动收集一个丰富的数据集?正是在这里,网站抓取发挥了作用。如果你熟悉网络,你肯定会想:“这难道不是应用程序编程接口(API)的目的吗?”事实上,许多网站现在都包含API,可以让世界各地的不同用户访问他们的数据源。例如,领英、推特、谷歌和脸书都有不同的API。

        抓取是从互联网中提取非结构化数据的常见方法,因此当抓取过程受到大量数据提取时,会对其进行检查。在抓取大量数据的同时,我们遇到了各种障碍,包括存储问题、对大量数据的captcha(验证)、对繁重计算能力的要求以及数据提取的可靠性。对基于云的web抓取架构进行的检查,该架构利用Amazon web Services来管理具有弹性的处理资源和存储(DynamoDB和Elastic Compute cloud)。本次检查旨在解决数据密集型企业使用单一基于云的架构进行大数据应用的可行性和抓取问题。Selenium被认为是我们的网络抓取工具之一,因为它提供了模拟真实用户与浏览器交互的网络驱动程序。此外,评估了所提出的基于云的抓取器的性能和可扩展性,并讨论了与其他基于云的抓取器相比所提出的云抓取器的优势。(Chaulagain et al, 2017)

        一个被称为“理论驱动的在线抓取”的概念,要求使用基于网络的大数据,被实质性的理论证明。其次,定义了数据源理论,这个词指的是研究人员必须对潜在的大数据源做出的假设,以便从中获得有意义的数据。至关重要的是,研究人员必须根据他们的数据源理论制定具体的假设进行测试,如果这些假设没有得到实验支持,那么应该修改或放弃使用该数据源的计划。第三,一个案例研究和示例Python代码演示包括如何使用在线抓取来收集大量数据,以及心理学家网络教程的链接。第四,概述了网络抓取计划的四个步骤。最后,对执行在线刮取操作时出现的法律、实践和道德问题进行了探索。(Landers et al, 2016). 

        为了适应各种场景,现代在线抓取技术已经从手动、特别操作发展到使用能够将整个网页转换为组织良好的数据集的完全自动化系统。高级在线抓取技术不仅可以解析标记语言或JSON文件,还可以与计算机视觉分析和自然语言处理集成,以复制人类用户查看网络信息的方式。(Zhao, 2017)

        扩展Web Scrapeng需要聚集大量的Web Scraper实例。虽然使用传统的本地服务器很难实现这一点,但只要Web Scratching服务包含DockerDocker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。Docker 入门教程 - 阮一峰的网络日志,使用谷歌和亚马逊云服务就相当简单。(Chaulagain等人,2017)选择在各种AWS(亚马逊云平台)上托管所有抓取资源。为了在交互式和动态的在线网页上有效地执行网络抓取,它必须尽可能地模仿人类的行为。此外,人们发现,当使用可扩展云平台的资源时,并行运行scraper更容易。此外,如果负载变得太重,则可以根据需要放大或缩小资源。除了使用基于云的资源并行收集大量数据外(Chaulagain等人,2017)还希望使用相同的资源构建一个分布式数据处理系统。使用云服务的好处是,抓取器可以同时抓取多个网站,并且只消耗所需的资源。。系统安排作业,存储检索到的内容,并使用S3和SQS等亚马逊服务为工作生成额外资源(Phan,2019)。

        云计算等复杂技术使网页抓取器能够更高效地运行。云计算等复杂技术使网页抓取器能够更高效地运行。如图5所示,所提出的抓取器以可靠的方式从网中提取数据。云计算实现了对存储资源的随需应变访问,并在分散的环境中实现了弹性计算。该体系结构的性能和可扩展性是在亚马逊云服务之上使用上述实验进行评估的。亚马逊提出了一项基于云的网络抓取架构调查,该调查利用EC2、S3和SQS服务开发,用于使用大量虚拟计算机实例进行网站抓取。

        此外,这种架构可以通过使用另一个云服务提供商来实现。如果主要目标是在不需要web自动化的情况下提高性能,则建议将selenium web呈现器作为一个选项。由于该体系结构依赖于完全可扩展的资源,因此能够实现大型数据应用程序。几乎大数据解决方案的资源需求都包含在建议的体系结构中。

        网络爬虫代表在应用程序或服务上搜索网络发现有趣的和相关的内容。例如,搜索引擎使用网络爬虫对互联网进行索引。网络爬虫在检索复杂的相关链接时面临着各种障碍,包括链接的复杂性和极其密集的计算需求。另一个困难是索引链接和非结构化数据(如电影、照片和二进制文件)的大量存储。以及请求可能搜索一种格式多样的材料(包括没有基于云的架构,文献中存在用于网络爬虫的非结构化数据,该数据充分解决了存储挑战和高强度处理。云计算支持非结构化数据和弹性资源,以及按次付费功能,使组织能够创建自己数量有限的网络主机爬网程序或互联网网络爬网程序。建议的网络爬虫可以通过使用分布式代理来探索网络,每个代理都将其发现存储在云Azure表(NoSQL数据库)上。此外,建议的网络爬虫可能使用Azure Blob存储来存储非结构化和大量的数据。对所提出的网络爬虫的性能和可扩展性进行了研究,并讨论了其相对于标准分布式网络爬虫的优势。

        为了从网络上获取大量信息并维护索引网站的非结构化数据集,网络爬虫需要极其昂贵的计算。云计算是一种高科技的分布式技术,提供了必要的网络爬虫基础设施。云计算环境提供了一种分布式架构,使应用程序能够按需消耗弹性资源,并在支持非结构化数据的NoSQL数据库中存储大量数据。(Bahrami等人,2015)。关于web抓取和云计算的一些细节在第3.4节中进行了部分讨论。