编者按
今天和大家分享的是公号君对数据抓取技术的学习笔记之一。
数据抓取(Data Scraping)是从目标数据源处收集相关数据的一个基本且不可或缺的过程。在人工智能时代,这种数据提取程序正逐渐受到越来越多的关注。简言之,数据抓取是指创建特定计算机程序,并使用该程序自动从目标数据源下载数据,解析并以结构化格式组织数据的过程。
进一步数据抓取可分为:
网页抓取(web scraping)
数据源:网页抓取专门侧重于从网站和网页中提取数据。它主要用于从网站内容(如文本、图像、链接和网站上的其他元素)中收集信息。
方法:网络搜刮通常涉及自动获取和解析网页 HTML 代码的技术,从网页内容中提取数据。它通常用于数据聚合、价格监控、内容整理和竞争分析等目的。
屏幕抓取(screen scraping)
数据源:屏幕抓取是指从计算机或终端屏幕的可视化显示中捕获数据的过程。它通常用于数据不易以结构化数字格式访问的桌面或应用程序。
方法:在屏幕抓取中,软件工具或脚本与应用程序的用户界面交互,以捕获和提取屏幕中的数据。这可能涉及捕获文本、图像或其他可视元素,然后处理这些数据。屏幕抓取通常用于将遗留系统中的数据集成到现代应用程序中。
应用程序编程接口抓取(API Scraping)
数据源:API 抓取是通过访问应用程序编程接口(API)来获取数据。API 通常由网站或服务提供,允许开发者以结构化的方式访问其数据和功能。数据源包括各种公开或受限的 API,返回的数据通常为 JSON、XML 等格式,便于机器读取和处理。
方法:在 API 抓取中,开发者使用编程语言或工具向 API 端点发送请求,并接收响应数据。通过调用 API,可以直接获取所需的数据,而无需解析网页 HTML 或屏幕内容。API 抓取常用于系统集成、数据分析、实时数据获取和应用程序开发等场景。
数据抓取 vs. 数据爬取或网页爬取(data crawling or web crawling)
爬取(crawling)是指 Google 等大型搜索引擎在发送其机器人爬网程序(如 Googlebot)到网络中以建立互联网内容索引时所进行的过程。另一方面,抓取(scraping)则是明确从特定网站提取数据的一种典型架构。
以下是数据抓取程序与网页爬取程序的3种不同行为:
数据抓取程序会假装为网页浏览器,而网页爬取程序会表明其目的,而不是试图蒙骗网站。
有时,数据抓取机器人会采取高级措施,例如填写表格或进行其他行为以进入网站的特定部分。网页爬取程序则不会。
数据抓取程序通常会无视 robots.txt 文件,这个文本文件中包含专门设计用于告诉网页爬取程序的信息,让其了解可以解析哪些数据,以及应该避开网站的哪些区域。数据抓取程序旨在抓取特定内容,因此,它可能设计用于抓取明确被 robots.txt 文件标记为应该忽略的内容。
数据抓取的一般流程
数据抓取的工作原理是从网站、数据库、文档或结构化或非结构化数据存储库等各种来源自动检索和提取数据的过程。以下是数据挖掘工作原理的总体概述:
选择数据源:首先,确定要从中提取信息的数据源;这可以是特定网站、数据库、文档或任何其他数据存储库。
访问数据:如果数据源是一个网站,那么数据搜刮首先要向网站服务器发送HTTP请求,以检索网页的HTML内容。对于数据库等其他数据源,可能需要使用适当的协议或 API 建立连接。
解析 HTML(用于网页抓取):在处理网页抓取时,先获取网页的HTML内容,然后进行解析。这种解析包括将HTML文档分解为标题、段落、表格和链接等组成元素。通常会使用Python中的 Beautiful Soup 或 JavaScript 中的 Cheerio 等工具。
选择和提取数据:解析 HTML 后,需要定义标准来识别和提取所需的特定数据;这包括使用CSS选择器或XPath等选择器来定位包含相关数据的HTML元素。例如,可以从电子商务网站中提取产品价格、名称和描述。
数据清理和转换:从扫描中获得的原始数据可能包含不需要的元素、不一致或格式问题。数据清理包括删除或处理这些异常,使数据可用,包括删除HTML标记、将数据转换为标准化格式以及处理缺失值。
存储和导出:抓取和清理数据后,可以选择将其存储到数据库、电子表格、文本文件或任何其他合适的存储介质中。某些数据抓取项目可能涉及实时分析或与其他系统的直接集成,因此数据可能不会存储在本地。
自动化和调度:数据抓取通常使用脚本或专用工具实现自动化。可以在特定时间间隔或针对特定事件安排抓取任务;这样就可以持续收集数据或定期更新数据。
监控和错误处理:数据抓取流程通常需要监控,以确保其按预期运行。可以实施错误处理机制,以解决可能出现的问题,例如源结构的更改或抓取过程的中断。
法律和伦理考虑因素:在进行数据抓取时,尊重服务条款和法律准则至关重要。某些网站在其使用条款中禁止数据抓取,数据隐私法规可能适用,尤其是涉及个人数据时。
可扩展性:对于大规模数据抓取项目,需要考虑扩展基础架构,以处理大量数据或频繁更新;这可能涉及分布式计算、代理和更先进的技术。
DPO线下沙龙的实录见:
域外数据安全和个人信息保护领域的权威文件,DPO社群的全文翻译:
传染病疫情防控与个人信息保护系列文章
关于数据与竞争政策的翻译和分析:
健康医疗大数据系列文章:
网联汽车数据和自动驾驶的系列文章:
网络空间的国际法适用问题系列文章:
《网络数据安全管理条例(征求意见稿)》系列文章:
关于我国数据跨境流动监管体制变革的系列文章:
关于新加坡数字化(包括个人信息、网络安全、人工智能等)方面的改革,本公号发表的文章:
关于健康医疗数据方面的文章有:
针对美国的人工智能监管政策发展,本公众号发表过如下文章: