Web Scraping

Bo Zhao
College of Earth, Ocean, and Atmospheric
Sciences, Oregon State University, Corvallis, OR,
USA

        从互联网上抓取数据的过程可以分为两个顺序步骤;获取web资源,然后从所获取的数据中提取期望的信息。——具体来说,网络抓取程序通过编写HTTP请求来从目标网站获取资源。此请求可以格式化为包含GET请求的URL或包含POST请求的HTTP消息。一旦目标网站成功接收并处理了请求,所请求的资源将从网站中检索,然后发送回给定的网页抓取程序。资源可以是多种格式,例如从HTML构建的网页、XML或JSON格式的数据源,或者图像、音频或视频文件等多媒体数据。下载web数据后,提取过程继续以结构化的方式解析、重新格式化和组织数据。

        web抓取程序有两个基本模块——一个用于编写HTTP请求的模块,如Urlib2或selenium,另一个用于解析和提取原始HTML代码中的信息,如Beautiful Soup或Pyquery

        在这里,Urllib2模块定义了一组处理HTTP请求的功能,如身份验证、重定向、cookie等,而Selenium是一个web浏览器包装器,它构建了一个web服务器,如Google Chrome或Internet Explorer,并使用户能够通过编程自动浏览网站。

        关于数据提取,Beautiful Soup是为抓取HTML和其他XML文档而设计的。它提供了方便的Python函数,用于导航、搜索和修改解析树;用于分解HTML文件并通过lxml或html5lib提取所需信息的工具包。Beautiful Soup可以自动检测正在处理的解析的编码,并将其转换为客户端可读的编码。类似地,Pyquery提供了一组类似Jquery的函数来解析xml文档。但与Beautiful Soup不同,Pyquery只支持lxml进行快速XML处理。

        在各种类型的网络抓取程序中,有些程序是为了自动识别页面的数据结构而创建的,如Nutch或Scrapy,或者是为了提供一个基于网络的图形界面,消除了手动编写网络抓取代码的需要,如Import.io。Nutch是一个用Java编写的健壮且可扩展的网络爬虫。它支持细粒度配置、并行收获、robots.txt规则支持和机器学习。Scrapy是用Python编写的,是一个可重用的网络爬行框架。它加快了构建和扩展大型爬行项目的过程。此外,它还提供了一个基于网络的外壳来模拟人类用户的网站浏览行为。为了让非编程人员能够获取网络内容,专门设计了带有图形界面的网络爬虫,以降低使用网络抓取程序的复杂性。其中,Import.io是一个典型的爬虫,用于在不编写任何代码的情况下从网站中提取数据。它允许用户识别非结构化网页并将其转换为结构化格式。Import.io用于数据识别的图形界面允许用户训练和学习提取内容。然后,提取的数据存储在专用的云服务器中,并可以CSV、JSON和XML格式导出。具有图形界面的基于web的爬网程序可以基于SVG或WebGL引擎轻松地获取和可视化实时数据流,但在操作大型数据集方面存在不足。

        网络抓取可用于多种场景,如联系人抓取、价格变化监测/比较、产品评论收集、房地产列表收集、天气数据监测、网站变化检测和网络数据集成。例如,在微观规模上,可以定期刮取股票价格,以可视化价格随时间的变化(Case等人,2005年),可以集体刮取社交媒体订阅源,以调查公众意见并确定意见领袖(刘和赵,2016年)。在宏观层面上,几乎每个网站的元数据都被不断地刮来构建互联网搜索引擎,比如谷歌搜索或必应搜索。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值