【数据挖掘】网页抓取科普
Web抓取、Web收获或Web数据提取是用于从网站提取数据的数据抓取。[1]网络抓取软件可以直接使用超文本传输协议或通过网络浏览器访问万维网。
虽然web抓取可以由软件用户手动完成,但该术语通常指使用bot或web爬虫程序实现的自动化过程。它是一种复制形式,从web上收集和复制特定的数据,通常将其复制到中央本地数据库或电子表格中,供以后检索或分析。Web抓取Web页面包括获取和提取。[1][2]获取是页面的下载(当您查看页面时,浏览器会这样做)。因此,web爬行是web抓取的主要组成部分,用于获取页面供以后处理。一旦提取,就可以进行提取。页面的内容可以被解析、搜索、重新格式化,其数据可以被复制到电子表格中,等等。
Web scraper通常会从页面中删除一些内容,然后将其用于其他地方的其他用途。例如,查找和复制姓名和电话号码,或公司及其url到列表(联系信息抓取)。Web刮刮用于接触,和作为一个组件的应用程序用于Web索引、Web挖掘和数据挖掘,在线价格变化监测和价格比较,产品评论刮(看竞争),收集房地产上市,气象数据监测、网站变化检测研究,跟踪网络形象和声誉,Web mashup, Web数据集成。Web页面是使用基于文本的标记语言(HTML和XHTML)构建的,并且经常以文本形式包含大量有用的数据。然而,大多数web页面是为人类最终用户设计的,而不是为了便于自动化使用。因此,创建了用于抓取web内容的工具包。web scraper是一个用于从web站点提取数据的应用程序编程接口(API)。亚马逊AWS和谷歌等公司向终端用户免费提供网络抓取工具、服务和公共数据。较新的web抓取形式包括侦听来自web服务器的数据提要。例如,JSON通常用作客户机和web服务器之间的传输存储机制。有些网站使用一些方法来防止web抓取,比如检测和禁止机器人爬行(查看)它们的页面。作为回应,有一些web抓取系统依赖于使用DOM解析、计算机视觉和自然语言处理技术来模拟人类浏览,从而能够收集web页面内容进行离线解析。
历史
- web抓取的历史实际上要长得多,可以追溯到万维网(俗称“Internet”)诞生的年代。
- 1989年万维网诞生后,第一个网络机器人——万维网漫游者诞生于1993年6月,其目的仅仅是测量万维网的大小。
- 1993年12月,第一个基于爬虫的网络搜索引擎——JumpStation诞生。由于当时的web上没有那么多可用的网站,搜索引擎常常依赖于它们的人工网站管理员来收集和编辑链接,并将其转换成特定的格式。跳跃站带来了新的飞跃。它是第一个依靠网络机器人的WWW搜索引擎。
- 2000年,第一个Web API和API爬虫出现了。API代表应用程序编程接口。它是一个接口,通过提供构建块使开发程序更加容易。2000年,Salesforce和eBay推出了自己的API,程序员可以使用该API访问和下载一些向公众开放的数据。从那时起,许多网站为人们访问公共数据库提供web api。
- 2004年,《美丽的汤》发行。它是一个为Python设计的库。由于并非所有的网站都提供api,程序员们仍在致力于开发一种能够促进web抓取的方法。使用简单的命令,Beautiful Soup可以解析HTML容器中的内容。它被认为是用于web抓取的最复杂和最先进的库,也是当今最常见和最流行的方法之一。
--
技术
Web抓取是从万维网上自动挖掘数据或收集信息的过程。这是一个积极发展的领域,与语义web vision有着共同的目标,这是一个雄心勃勃的计划,仍然需要在文本处理、语义理解、人工智能和人机交互方面取得突破。当前的web抓取解决方案包括从需要人工操作的临时解决方案到能够将整个web站点转换为结构化信息的完全自动化的系统,这些系统具有一定的局限性。
人类的复制粘贴
有时候,即使是最好的网络抓取技术也无法取代人工检查和复制粘贴,有时候,这可能是唯一可行的解决方案,因为抓取网站明确设置了障碍,防止机器自动化。
文本模式匹配
从web页面提取信息的简单而强大的方法可以基于UNIX grep命令或编程语言(例如Perl或Python)的正则表达式匹配工具。
HTTP编程
通过使用套接字编程将HTTP请求发送到远程web服务器,可以检索静态和动态web页面。
HTML解析
许多网站都有大量的页面集合,这些页面是从底层的结构化资源(如数据库)动态生成的。相同类别的数据通常由公共脚本或模板编码到类似的页面中。在数据挖掘中,检测特定信息源中的模板、提取其内容并将其转换为关系形式的程序称为包装器。包装器生成算法假设包装器归纳系统的输入页面符合公共模板,并且可以根据URL公共模式轻松识别它们。此外,一些半结构化的数据查询语言,如XQuery和HTQL,可以用来解析HTML页面,检索和转换页面内容。
DOM parsing
进一步信息:文档对象模型通过嵌入成熟的web浏览器(如Internet Explorer或Mozilla浏览器控件),程序可以检索由客户端脚本生成的动态内容。这些浏览器控件还将web页面解析为一个DOM树,根据这个树,程序可以检索页面的一部分。
Vertical aggregation
垂直聚合有几家公司已经开发了垂直特定的收获平台。这些平台为特定的垂直领域创建和监控大量的“机器人”,没有“人工参与”(没有直接的人工参与),也没有与特定目标站点相关的工作。准备工作包括建立整个垂直平台的知识库,然后平台自动创建机器人。平台的健壮性是由它检索的信息的质量(通常是字段的数量)和可伸缩性(扩展到数百或数千个站点的速度)来衡量的。这种可扩展性主要用于针对常见的聚合器发现的复杂或太劳动密集型而无法获取内容的站点的长尾。
语义标注识别
被抓取的页面可能包含元数据或语义标记和注释,它们可用于定位特定的数据片段。如果注释像微格式那样嵌入到页面中,则可以将此技术视为DOM解析的特殊情况。在另一种情况下,组织成语义层的注释[4]与web页面分别存储和管理,所以抓取器可以在抓取页面之前从这一层检索数据模式和指令。
计算机视觉
网页分析有使用机器学习和计算机视觉的努力,试图识别和提取信息从网页通过解释网页视觉作为一个人可能.
软件
有许多可用的软件工具可用于定制web抓取解决方案。这个软件可能试图自动识别页面的数据结构或提供一个记录接口,消除了需要手工编写web-scraping代码,或某些脚本函数,可用于提取和转换的内容,和数据库接口,可以将刮数据存储在本地数据库中。一些web抓取软件也可以用来直接从API中提取数据。
示例工具
- Beautiful Soup 2004年创建的用于web抓取的开源Python库。
- cURL—用于传输(包括获取)数据的命令行工具和库,url支持多种HTTP方法(GET、POST、cookie等)。
- Data Toolbar- Internet Explorer、Mozilla Firefox和谷歌Chrome浏览器的web抓取附加组件,用于收集web页面中的结构化数据并将其转换为可加载到电子表格或数据库管理程序中的表格格式。
- gazpacho 用于检索和解析网页HTML内容的开源Python库。
- Diffbot -使用计算机视觉和机器学习自动提取数据的网页,解释网页视觉作为一个人可能。
- Heritrix -得到页面(很多)。它是一个网络爬虫设计的网络存档,由互联网档案(见Wayback机器)编写。
- HtmlUnit -无头浏览器,可用于检索网页,网页抓取等。
- HTTrack 免费和开放源代码的网络爬虫和离线浏览器,旨在下载网站。
- iMacros -一个用于记录、编码、共享和回放浏览器自动化(javascript)的浏览器扩展。
- Selenium (software)一个可移植的web应用程序软件测试框架。
- Jaxer
- Mozenda 是一个所见即所得的软件,提供云、现场和数据争吵服务。
- nokogiri 基于XPath或CSS选择器的HTML、XML、SAX和Reader解析器。
- OutWit Hub - Web抓取应用程序,包括内置的数据,图像,文件提取器和编辑器,用于自定义抓取器和自动探索和提取作业(免费和付费版本)。
- watir -开放源码Ruby库,可以像人们一样自动化测试和与浏览器交互。
- Wget—从web服务器检索内容的计算机程序。它是GNU项目的一部分。
- WSO2 Mashup Server –它支持通过HTTP、HTTPS和FTP协议进行下载。
- WSO2 Mashup服务器-雅虎查询语言(YQL) -
Javascript工具
- Greasemonkey
- node . js
- PhantomJS -脚本化的无头浏览器,用于自动化网页交互。
- jQuery
Web爬行框架
这些可以用来构建web抓取器。
- crapy
原文:https://en.wikipedia.org/wiki/Web_scraping
本文:
讨论:请加入知识星球或者小红圈【首席架构师圈】
- 43 次浏览