使用R实现网页抓取的实践指南

在本教程中,我们将展示以从亚马逊网站的一个可公开访问的URL 中提取产品评论为目标,使用R的rvest(R用户使用率最高的爬虫包)进行网络抓取所涉及的所有步骤。
摘要由CSDN通过智能技术生成

在本教程中,我们将展示以从亚马逊网站的一个可公开访问的URL 中提取产品评论为目标,使用R的rvest(R用户使用率最高的爬虫包)进行网络抓取所涉及的所有步骤。

使用R语言进行网页抓取的入门

第一步:了解我们将在本教程中使用的工具。

了解工具:R 和 rvest

R是一种功能丰富且易于使用的语言,它可以用于统计分析和数据可视化,为数据整理和动态类型提供有用的工具。

rvest——来自英文单词“harvest”(收割)——是提供网络抓取功能的最流行的爬虫包之一,这也要归功于其极其友好的用户界面。Vanilla rvest 仅允许用户从一个网页中提取数据,这非常适合起步阶段初学者的探索。之后可以使用polite库扩展它以实现抓取多个页面的需求。

  • 设置开发环境

如果您尚未在RStudio 中使用过R语言,请按照此处的说明进行安装。

完成后,打开控制台并安装rvest:

install.packages("rvest")

作为tidyverse集合的一部分,官方建议使用集合中的其他包进一步扩展 rvest 的内置功能,例如用于代码可读性的magrittr或用于处理 HTML 和 XML 的xml2。可以通过直接安装 tidyverse 来做到这一点:

install.packages("tidyverse")

了解网页

网页抓取是一种在合规的自动化流程中从网站检索数据的技术。

由该定义从而产生了三个重要的考虑因素:

  • 数据有多种格式。

  • 不同的网站有各不相同的方式显示信息。

  • 抓取的数据需要合法合规。

要了解如何从URL中抓取信息,首先需要了解网页内容是如何通过HTML 标记语言和 CSS 表单样式语言展示的。

HTML提供网页的内容和结构——加载到网络浏览器中以创建树状文档对象模型(DOM)——通过使用“标签”组织内容。

标签具有层次结构,每个标签都有一个特定的功能,应用于其开始() 和结束 () 语句中包含的所有内容:

<!DOCTYPE html>

<html lang="en-gb" class="a-ws a-js a-audio a-video a-canvas a-svg a-drag-drop a-geolocation a-history a-webworker a-autofocus a-input-placeholder a-textarea-placeholder a-local-storage a-gradients a-transform3d -scrolling a-text-shadow a-text-stroke a-box-shadow a-border-radius a-border-image a-opacity a-transform a-transition a-ember" data-19ax5a9jf="dingo" data-aui-build-date="3.22.2-2022-12-01">

<head>..</head>

<body class="a-aui_72554-c a-aui_accordion_a11y_role_354025-c a-aui_killswitch_csa_logger_372963-c a-aui_launch_2021_ally_fixes_392482-t1 a-aui_pci_risk_banner_210084-c a-aui_preload_261698-c a-aui_rel_noreferrer_noopener_309527-c a-aui_template_weblab_cache_333406-c a-aui_tnr_v2_180836-c a-meter-animate" style="padding-bottom: 0px;">..</body>

</html>

标签<html>是任何网页的最小组件,其中嵌套有<head>,和<body>标签。<head>和 <body> 本身是其他标签的“父母”,<div>(对于文档部分)和<p>(对于段落)是它们最常见的“孩子”。

在上面的代码片段中,可以看到与每个HTML“元素”关联的“属性”:lang、class和style是预先构建的;开头的属性data-是亚马逊自定义的。

class连同id属性对于网络抓取特别感兴趣,因为它们允许我们分别针对一组元素或其中的某个特定元素。这最初是为了在 CSS 中设置样式。

CSS 提供网页的样式。从着色到定位和调整大小,你可以选择任何HTML元素并为其样式属性分配新值。你还可以通过样式属性在HTML元素中内联应用CSS样式,如在上面的代码片段中所见:

<body .. style="padding-bottom: 0px;">

在纯CSS 中,会被写作:

body {padding-bottom: 0px;}

在这里,主体是“选择器”,padding-bottom是“属性”,0px是“值”。

任何标签, class, 或者id可以被用作 CSS 选择器。

用户可以通过script标签通过JavaScript编程语言提供的功能与网页上显示的内容进行动态交互。在用户交互之后,显示的内容可能会发生变化,可能会出现新的内容;我们稍后会讨论到高级网络抓取工具可以模仿用户交互。

了解开发者工具

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值