维护者 | Mauricio Vargas Sepulveda, Will Beasley |
联系方式 | mavargas11 at uc.cl |
版本 | 2023-02-18 |
URL | https://CRAN.R-project.org/view=WebTechnologies |
源代码 | https://github.com/cran-task-views/WebTechnologies/ |
贡献 | 欢迎您对本任务视图提出建议和改进意见,您可以通过 GitHub 上的问题或拉取请求,或通过电子邮件联系维护者。有关更多详细信息,请参阅 贡献指南。 |
引用 | Mauricio Vargas Sepulveda, Will Beasley (2023). CRAN 任务视图:Web 技术与服务。版本 2023-02-18。URL https://CRAN.R-project.org/view=WebTechnologies。 |
安装 | 您可以使用 ctv 包自动安装本任务视图中的软件包。例如,ctv::install.views("WebTechnologies", coreOnly = TRUE) 安装所有核心软件包,或 ctv::update.views("WebTechnologies") 安装所有尚未安装和更新的软件包。有关更多详细信息,请参阅 CRAN 任务视图计划。 |
本任务视图推荐使用软件包和策略,以有效地与 R 中的互联网资源进行交互。本任务视图重点关注
如果您有关于改进或扩展本任务视图的建议,请在上面链接的 GitHub 存储库中提交问题或拉取请求。如果您无法在 GitHub 上贡献,请通过电子邮件联系任务视图维护者。如果您在下面讨论的软件包中遇到问题,请联系软件包的维护者。
感谢所有对本任务视图做出贡献的人,特别是 Scott Chamberlain、Thomas Leeper、Patrick Mair、Karthik Ram 和 Christopher Gandrud,他们一直维护着本任务视图直到 2021 年。
R 的大部分功能都由 CRAN 软件包提供,这些软件包建立在 libcurl 之上。四个软件包为大多数现代方法奠定了基础。
httr 是一个面向用户的 HTTP 请求客户端。它利用 curl 包来执行大多数操作。可以通过 httr 的 config
参数将其他选项传递给 curl。如果您正在开发一个调用 Web 服务的包,建议您阅读 httr 的示例。
httr 团队正在开发它的继任者,httr2。如果您正在创建一个需要稳定基础的包,您现在可以使用 httr 并等待 httr2 v1.0 发布。但是,如果您能够适应 httr2 成熟过程中的重大更改,那么现在投资 httr2 的方法可能会有益。
crul 是另一个利用 curl 的包。它是一个基于 R6 的客户端,支持异步 HTTP 请求、分页助手、通过 webmockr 进行 HTTP 模拟,以及通过 vcr 进行单元测试的请求缓存。crul 旨在被其他包调用,而不是 R 用户。与 httr 不同,crul 的 当前版本 不支持 OAuth。在实例化 crul 的 R6 类时,可以将其他选项传递给 curl。
curl 是一个更底层的包,它提供了一个 R 和 libcurl C 库 之间的紧密接口。它不打算被典型的 R 用户直接调用。curl 可能对基于 Web 的 XML 或 FTP 操作有用(因为 crul 和 httr 主要集中在 HTTP 上)。
utils 和 base 是提供 download.file()
、url()
和相关函数的基本 R 包。这些函数也使用 libcurl。
近年来,许多函数已更新以适应使用 TLS/SSL 保护的网页。因此,您通常可以下载文件的,如果它的 url 以“http”或“https”开头。
如果数据文件无法通过简单的 url 访问,您可能需要跳到 在线服务 部分。它描述了如何使用特定的 Web 服务,例如 AWS、Google 文档、Twitter、REDCap、PubMed 和维基百科。
如果信息由数据库引擎提供,请查看下面 在线服务 部分中的云服务,以及 数据库 与 R CRAN 任务视图。
许多基本和 CRAN 包提供接受 url 并返回 data.frame
或 list
的函数。
read.csv()
、read.table()
等函数返回一个 base::data.frame
。read_csv()
、read_delim()
等函数返回一个 tibble::tibble
,它继承自 base::data.frame
。fread()
返回一个 data.table::data.table
,它继承自 base::data.frame
。read_csv_arrow()
返回一个 tibble::tibble()
或其他 Arrow 结构。如果您需要处理其他类型的文件,可以通过两个步骤完成。首先从服务器下载文件到本地计算机;其次将新本地文件的路径传递给像 haven 或 foreign 这样的包中的函数。
许多基本和 CRAN 包提供了下载文件的函数
download.file()
。curl_download()
和 curl_fetch_multi()
等函数。httr::GET()
(或 RCurl::getURL()
)首先将文件作为字符向量读入 R,然后使用 utils::read.table(text = ...)
等函数进行解析。绝大多数基于网络的数据以纯文本、HTML、XML 或 JSON 的形式进行结构化。Web 服务 API 越来越依赖 JSON,但 XML 在许多应用程序中仍然很普遍。有几个专门用于处理这些格式的包。这些函数可用于直接与不安全的网页交互,或用于解析本地存储或内存中的网页文件。通俗地说,这些活动被称为网页抓取。
XML:有两个用于处理 XML 的基础包:XML 和 xml2。两者都支持通用 XML(和 HTML)解析,包括 XPath 查询。xml2 的功能较少,但在内存管理、类(例如,XML 节点与节点集与文档)和命名空间方面更易于使用。在这两者中,只有 XML 支持从头开始创建 XML 节点和文档。
其他 XML 工具包括XML2R (已归档) 是一个方便的函数集合,用于将 XML 强制转换为数据框。 XML 的替代方案是 selectr,它解析 CSS3 选择器并将它们转换为 XPath 1.0 表达式。 XML 通常用于解析 xml 和 html,但 selectr 将 CSS 选择器转换为 XPath,因此可以使用 CSS 选择器而不是 XPath。
xslt 是 xml2 的扩展,用于通过应用 xslt 样式表来转换 XML 文档。这可能对网页抓取以及将 XML 标记转换为其他人类或机器可读格式(例如,HTML、JSON、纯文本等)很有用。
xml2::read_html()
是用于导入 HTML 的一个很好的第一个函数。其他工具专门设计用于处理 HTML。|>
和 magrittr 的 %>%
)来表达常见的网页抓取任务。r github("cpsievert/rdom")
使用 PhantomJS 访问网页的文档对象模型 (DOM)。htmltools 提供用于创建 HTML 元素的函数。
JSON:有几个用于读取和写入 JSON 的包:rjson、RJSONIO 和 jsonlite。我们建议使用 jsonlite。查看 Jeroen Ooms 撰写的描述 jsonlite 的论文 https://arxiv.org/abs/1403.2805。 jqr 为快速 JSON 库“jq”提供绑定。 jsonvalidate 使用“is-my-json-valid” JavaScript 库根据模式验证 JSON;ajv 使用“ajv” JavaScript 库执行相同的操作。 ndjson 支持“ndjson”格式。
swagger 可用于自动生成用于处理提供 Swagger.io 格式文档的网络服务 API 的函数。
emrlapply()
的 lapply()
的并行版本,用于 Elastic Map Reduce (EMR) 引擎。它使用 Amazon 的 EMR 上的 Hadoop Streaming 来实现简单的并行计算。source_Dropbox()
函数用于从非公开文件夹下载/缓存纯文本数据。其他云存储: boxr 是 box.com API 的轻量级、高级接口。
pins 可用于在各种后端(包括 AWS、Azure、Google Cloud Storage 和 Posit Connect)上发布数据、模型和其他 R 对象。
googlesheets
)可以通过标题、密钥或 URL 访问私有或公共“Google Sheets”。提取数据或编辑数据。创建、删除、重命名、复制、上传或下载电子表格和工作表。 gsheet 可以仅使用共享链接下载 Google Sheets。电子表格可以下载为数据框,也可以下载为纯文本以手动解析。imgur_upload()
用于从文字编程文档中加载图像。此列表描述了在线服务。有关该主题的更完整说明,请参阅MachineLearning CRAN 任务视图。
googlepredictionapi
(不在 CRAN 上,但可从 Google 获取):是 Google Prediction API 的 R 客户端,这是一套云机器学习工具。 yhatr 允许您通过 Yhat REST API 部署、维护和调用模型。 datarobot 与 Data Robot 的预测建模平台协同工作。 mscsweblm4r 与 Microsoft Cognitive Services Web Language Model API 交互,而 mscstexta4r 使用 Microsoft Cognitive Services Text Analytics REST API。 rosetteApi 连接到“Rosette”文本分析 API。 googleLanguageR 提供对 Google 的 Cloud Translation API、Natural Language API、Cloud Speech API 和 Cloud Text-to-Speech API 的接口。 AzureVision 提供对 Azure Computer Vision 和 Custom Vision 图像识别服务的接口。此列表描述了在线服务。有关该主题的更完整说明,请参阅分析 Spatial 数据 CRAN 任务视图。
地理位置/地理编码:在地址和经纬度之间进行转换的服务。 rgeolocate 提供了多种在线和离线工具。 rydn(不在 CRAN 上)是 Yahoo 开发者网络地理位置 API 的接口,而 ipapi 可以使用 http://ip-api.com/ API 来对 IPv4/6 地址和/或域名进行地理定位。 opencage 提供对“OpenCage”地理编码服务的访问。 nominatim(不在 CRAN 上)连接到 OpenStreetMap Nominatim API 进行反向地理编码。 PostcodesioR 提供英国的邮政编码查找和地理编码。 geosapi 是“GeoServer”REST API 的 R 客户端,这是一个广泛用于提供空间数据的开源实现。 geonapi 提供对“GeoNetwork”遗留 API 的接口,这是一个用于管理地理元数据的开源目录。 ows4R 是“OGC”标准 Web 服务的新 R 客户端,例如用于数据的 Web 特征服务 (WFS) 和用于元数据的目录服务 (CSW)。
除非另有说明,以下软件包提供与其关联服务的接口。
以下软件包与在线服务交互,这些服务有助于网络分析。
以下软件包与工具交互,这些工具有助于网络分析。
webreadr
有些重叠,但 webreader 专注于读取日志文件,而 WebAnalytics 专注于分析它们。参考/书目/引用管理: rorcid 连接到 Orcid.org API,它可以识别科学作者及其出版物(例如,通过 DOI)。rdatacite 连接到 DataCite,它管理学术数据集的 DOI 和元数据。scholar 从 Google Scholar 中提取引用数据。rscopus 从 Elsevier Scopus 中提取引用数据。还提供了用于比较多个学者和预测未来 h 指数值的便利函数。mathpix 通过 Mathpix 网络服务将公式图像(排版或手写)转换为“LaTeX”代码。zen4R 连接到 Zenodo API,包括管理沉积、归属 DOI 和上传文件。
文献: europepmc 连接到欧洲 PubMed Central 服务。pubmed.mineR 用于 PubMed 摘要 的文本挖掘,支持从 PubMed 中获取文本和 XML。jstor 从 JSTOR 的 Data for Research 服务中检索元数据、ngrams 和全文。aRxiv 连接到 arXiv,这是一个用于计算机科学、数学、物理学、定量生物学、定量金融和统计学的电子预印本存储库。roadoi 连接到 Unpaywall API,用于查找学术论文的免费全文版本。rcrossref 是 Crossref API 的接口。
许多 CRAN 包与促进体育分析的服务交互。有关该主题的更完整处理,请参阅SportsAnalytics CRAN 任务视图。
使用此 Web 技术任务视图中的包可以帮助您以编程方式获取数据,这可以促进可重复研究。有关更多工具和信息,请参阅ReproducibleResearch CRAN 任务视图。
“可重复研究的目标是将特定指令与数据分析和实验数据联系起来,以便可以重新创建、理解和验证学术成果。”
推送通知: RPushbullet 为 Pushbullet 服务提供了一个易于使用的界面,该服务在计算机、手机和平板电脑之间提供快速高效的通知。 pushoverr 可以使用“Pushover”将推送通知发送到移动设备(iOS 和 Android)和桌面。 notifyme 可以控制飞利浦 Hue 照明。
自动元数据收集: oai 和 OAIHarvester 使用元数据收集的开放档案倡议协议 (OAI-PMH) 标准收集元数据。
维基百科: WikipediR 是“MediaWiki”API 的包装器,特别针对“Wikimedia”的“生产”维基,例如“维基百科”。 WikidataR 可以从 Wikidata.org(免费知识库)请求数据。 wikipediatrend (已存档) 提供对维基百科页面访问统计数据的访问。 WikidataQueryServiceR 是 Wikidata 查询服务 的客户端。
rerddap: 与任何 ERDDAP 实例交互的通用 R 客户端,ERDDAP 是 OPeNDAP (https://en.wikipedia.org/wiki/OPeNDAP) 的特例,即网络数据访问协议的开源项目。允许用户交换基本 URL 以使用任何 ERDDAP 实例。
RStripe (已存档) 提供与“Stripe”的接口,Stripe 是一个在线支付处理器。
duckduckr 是 DuckDuckGo 的 R 接口。
websockets
(已从 CRAN 退休)。 servr 提供一个简单的 HTTP 服务器,用于基于 httpuv 在给定目录下提供文件。PluginR
),用于从 wiki 页面运行 R 代码,并使用他们自己收集的 Web 数据库(跟踪器)中的数据。演示:https://r.tiki.org/tiki-index.php 。webmock
的启发。 webmockr 仅帮助模拟 HTTP 请求,并在请求匹配期望时不返回任何内容。它与 crul 和 httr 集成。有关使用返回的响应进行模拟,请参见测试。application/x-www-form-urlencoded
和 multipart/form-data
的解析器。 mime 从文件的扩展名猜测其 MIME 类型。 rsdmx 提供了通过统计数据和元数据交换 (SDMX) 框架交换数据和元数据文档的工具;它侧重于 SDMX XML 标准格式 (SDMX-ML)。 robotstxt 提供了用于解析 robots.txt 文件和检查访问权限的函数和类; spiderbar 也执行相同的操作。 uaparserjs 使用 JavaScript “ua-parser” 库 来解析 User-Agent HTTP 标头。 rapiclient 是一个用于使用遵循 Open API 格式 的 API 的客户端。 restfulr 将 RESTful 服务建模为嵌套的 R 列表。httr::parse_url()
函数可用于提取 URL 的部分内容。RCurl::URLencode()
和 utils::URLencode()
函数可用于对字符字符串进行编码,以便在 URL 中使用。utils::URLdecode()
将其解码回原始字符串。urltools 还可以处理 URL 编码、解码、解析和参数提取。对于特殊情况,以下资源可能有用
身份验证:使用网络资源可能需要身份验证,可以通过 API 密钥、OAuth、用户名:密码组合或其他方式进行。此外,有时需要身份验证的网络资源必须位于 http 调用标头中,这需要一些额外的操作。API 密钥和用户名:密码组合可以在对网络资源的调用中与 URL 结合使用,也可以通过 RCurl 或 httr 中的命令指定。OAuth 是最复杂的认证过程,最容易使用 httr 完成。
请参阅 httr 中的 6 个演示,其中三个用于 OAuth 1.0(LinkedIn、Twitter、Vimeo),三个用于 OAuth 2.0(Facebook、GitHub、Google)。ROAuth 为 OAuth 提供了独立的 R 接口。OAuth 在 httr 中更容易实现,因此从这里开始。 googleAuthR 提供专门针对 Google 网络服务的 OAuth 2.0 设置,而 AzureAuth 为 Azure Active Directory 提供类似的功能。