当用 R 抓取网页并且它没有价值时如何报告 NA?

2024-02-12

我从 booking.com 的页面上抓取数据并创建数据框,我注意到并非所有酒店都有评级。

我尝试过这个例如:

# Got the elements from Inspect code of the page
titles_page <- page %>% html_elements("div[data-testid='title'][class='fcab3ed991 a23c043802']") %>% html_text()
prices_page <- page %>% html_elements("span[data-testid='price-and-discounted-price']") %>% html_text()
ratings_page <- page %>% html_elements("div[aria-label^='Punteggio di']") %>% html_text()

# The variable ratings
tryCatch(expr ={
      ratings_page <- remDr$findElements(using = "xpath", value = "div[aria-label^='Punteggio di']")$getElementAttribute('value')
    },   
    #If the information does not exist in this way it writes NA to the ratings element
    error = function(e){          
      ratings_page <-NA
    })

它不会改变任何东西。

当对象没有价值时如何报告 NA?


这是基于此链接中的策略的解决方案:如何将项目整合在一起以免丢失索引? https://stackoverflow.com/questions/56673908/how-do-you-scrape-items-together-so-you-dont-lose-the-index/56675147#56675147.

这里的关键是使用html_element()(没有 s)。html_element()总是会返回一个答案,即使它是 NA。这样,如果父节点中缺少该元素,NA 将填补空白。

library(rvest)
library(dplyr)

#read the page
url <-"https://www.booking.com/searchresults.it.html?ss=Firenze%2C+Toscana%2C+Italia&efdco=1&label=booking-name-L*Xf2U1sq4*GEkIwcLOALQS267777916051%3Apl%3Ata%3Ap1%3Ap22%2C563%2C000%3Aac%3Aap%3Aneg%3Afi%3Atikwd-65526620%3Alp9069992%3Ali%3Adec%3Adm%3Appccp&aid=376363&lang=it&sb=1&src_elem=sb&src=index&dest_id=-117543&dest_type=city&ac_position=0&ac_click_type=b&ac_langcode=it&ac_suggestion_list_length=5&search_selected=true&search_pageview_id=2e375b14ad810329&ac_meta=GhAyZTM3NWIxNGFkODEwMzI5IAAoATICaXQ6BGZpcmVAAEoAUAA%3D&checkin=2023-06-11&checkout=2023-06-18&group_adults=2&no_rooms=1&group_children=0&sb_travel_purpose=leisure&fbclid=IwAR1BGskP8uicO9nlm5aW7U1A9eABbSwhMNNeQ0gQ-PNoRkHP859L7u0fIsE"
page <- read_html(url)

#parse out the parent node for each parent 
properties <- html_elements(page, xpath=".//div[@data-testid='property-card']")

#now find the information from each parent
#notice html_element - no "s"
title <- properties %>% html_element("div[data-testid='title']") %>% html_text()
prices <- properties %>% html_element("span[data-testid='price-and-discounted-price']") %>% html_text()    
ratings <- properties %>% html_element(xpath=".//div[@aria-label]") %>% html_text()

data.frame(title, prices, ratings)

                                       title   prices ratings
1                   Sweetly home in Florence US$1.918    <NA>
2                                   Pepi Red US$3.062        
3                 hu Firenze Camping in Town   US$902     8,4
4                              Plus Florence US$1.754     7,9
5                     Artemente Florence B&B US$4.276        
6                                Villa Aruch US$1.658        
7                                Hotel Berna US$2.184        
8                                Hotel Gioia US$2.437        
9                              Hotel Magenta US$3.250        
10                              Villa Neroli US$3.242        
11                       Residenza Florentia US$2.792     8,0
12                Ridolfi Sei Suite Florence US$1.243    <NA>
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当用 R 抓取网页并且它没有价值时如何报告 NA? 的相关文章

  • 更改 pander 中的默认对齐方式 (pandoc.table)

    我目前正在切换到pander对于我的大部分时间knitr markdown格式化 因为它提供了如此出色的pandoc支持 我不太满意的一件事是默认的居中对齐 营销人员可能会喜欢它 但对于技术报告来说这是一个可怕的事情 使用的最佳选择Hmis
  • 汇总表中各列的字符值比例

    在这种数据框中 df lt data frame w1 c A A B C A w2 c C A A C C w3 c C A B C B 我需要计算所有列中字符值的列内比例 有趣的是 以下代码适用于大型实际数据集 但对上述玩具数据会引发错
  • 按不规则时间间隔对数据进行分组求和(R语言)

    我正在看这里的 stackoverflow 帖子 R 计算一组内的观察次数 https stackoverflow com questions 65366412 r count number of observations within a
  • RStudio 如何确定控制台宽度,为什么它似乎总是出错?

    我刚刚发现wid lt options width在 RStudio 中 它似乎是我日常控制台使用中令人烦恼的根源 或者更确切地说 更接近根源 我应该先说一下 我目前使用的是 R 3 2 2 RStudio 0 99 491 Linux M
  • 如何绘制堆积比例图?

    我有一个数据框 x lt data frame id letters 1 3 val0 1 3 val1 4 6 val2 7 9 id val0 val1 val2 1 a 1 4 7 2 b 2 5 8 3 c 3 6 9 我想绘制一个
  • 从 df 中提取具有两列的重叠行对

    我想找出这两个表之间哪些对重叠 gt dput data1 structure list Name x c MDH1 MDH1 IDH2 IDH2 IDH2 IDH2 IDH2 IDH2 IDH2 SCOALB SCOALB CSY4 CS
  • R- 将某些列从 0 标准化为 1,其值等于 0

    我最近开始使用 are 我想扩展我的数据矩阵 我在这里找到了一种方法在两点之间缩放系列 https stackoverflow com questions 5468280 scale a series between two points
  • 使用大矩阵操作

    我必须使用 big matrix 对象 并且无法计算某些函数 让我们考虑以下大矩阵 create big matrix object x lt as big matrix matrix sample 1 10 20 replace TRUE
  • 融化R中的下半矩阵

    如何融化下半三角形加对角矩阵 11 NA NA NA NA 12 22 NA NA NA 13 23 33 NA NA 14 24 34 44 NA 15 25 35 45 55 A lt t matrix c 11 NA NA NA NA
  • rpart“as.character(x) 中的错误:无法强制类型 'builtin' 为类型 'character' 的向量”消息是什么意思?

    我一直在用头撞rpart几天了 尝试为我拥有的这个数据集制作分类树 我认为现在是时候询问生命线了 我确信这是我没有看到的愚蠢的事情 但这里是我一直在做什么 EuropeWater lt read csv file paste Users a
  • 从 n,k 维矩阵数组中减去 n,k 维矩阵

    如果我有一个数组A A lt array 0 c 4 3 5 for i in 1 5 set seed i A i lt matrix rnorm 12 4 3 如果我有矩阵 B set seed 6 B lt matrix rnorm
  • 如何在 Caret 中绘制随机森林(护林员)树

    我生成了如下所示的随机森林树 并尝试绘制它 但出现错误 我在哪里犯了错误 我怎样才能以正确的方式绘制它 Actmodel lt train Activity Section Author data CB1 method ranger trC
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • R中的重叠矩阵

    我有以下数据框 id channel 1 a 1 b 1 c 2 a 2 c 3 a 我想创建并重叠矩阵 它基本上是一个方阵 行和列标签为 a b c 表中的每个条目显示每个通道共有多少个 id 例如 在上面的例子中 矩阵看起来像 a b
  • R - 计算 bin 中特定值的数量

    我有一个如下所示的数据框 df Value lt c 1 1 0 2 1 3 4 0 0 1 2 0 3 0 4 5 2 3 0 6 Sl lt c 1 20 df lt data frame Sl Value gt df Sl Value
  • Quantmod 的简单功能不再起作用

    我明天要交论文 我收到了一条关于 quantmod 的非常奇怪的错误消息 这是我在过去几周使用这个包时从未遇到过的 我无法导入特定于道琼斯指数 DJI 的数据 我收到以下错误消息 getSymbols DJI src yahoo from
  • 访问或解析 R 中的 summary() 中的元素

    我运行以下 R 命令来进行 Dunnett 测试并获取摘要 如何访问下面线性假设的每一行 这是摘要输出的一部分 基本上我不知道摘要的结构 我尝试使用名称 但它似乎不起作用 因为我没有看到任何命名属性来提供这一点 library multco
  • 警告消息 - 来自 dummies 包的 dummy

    我正在使用 dummies 包为分类变量生成虚拟变量 其中一些变量具有两个以上类别 testdf lt data frame A as factor c 1 2 2 3 3 1 B c A B A B C C C c D D E D D E
  • 如何在 Shiny 中提取动态生成的输入值?

    我正在创建一个闪亮的应用程序 它将根据客户的不同功能为客户生成分数 在我闪亮的应用程序中 我提供了 checkboxGroupInput 来选择所需的功能 根据所选功能 应用程序将动态地将 numericInput 添加到 Web ui 以
  • 绘制 Cox 回归的 Kaplan-Meier 图

    我使用 R 中的以下代码设置了一个 Cox 比例风险模型来预测死亡率 添加协变量 A B 和 C 只是为了避免混淆 即年龄 性别 种族 但我们真正对预测变量 X 感兴趣 X 是一个连续变量 cox model lt coxph Surv t

随机推荐

  • OnItemClickListener 使用 ArrayAdapter 用于 ListView

    我想要为使用 ArrayAdapter 创建的 ListView 提供一个 OnItemClickListener 这是我用来创建它的代码 List
  • 我想以一种不同的方式分解变量[重复]

    这个问题在这里已经有答案了 我有这个变量 var A B C D 1 2 3 4 5 6 E F 我想分解它以获得以下数组 array 0 gt A 1 gt B 2 gt C 3 gt D 4 gt 1 2 3 4 5 6 5 gt E
  • MySql UTF 编码

    java sql SQLException Incorrect string value xAC xED x00 x05sr for column xxxx 该列是 MYSQL 中的长文本 具有 utf8 字符集和 utf8 general
  • MySQL 警告:错误的字符串值:'\x96

    我正在尝试导入 CVS 文件 但收到此警告 1366 错误的字符串值 列的 x96 PART 我在某处读到这是关于 4 位 utf8 字符的 但是将表和列的排序规则更改为 utf8mb4 也不起作用 The hex 96大概是latin1编
  • Symfony2:在表单集合中自定义表单标签

    我正在尝试自定义在子表单中生成的表单标签 我想显示特定比赛周中包含的足球比赛 如下所示 Fixture 1 Manchester United 0 1 Arsenal Fixture 2 Chelsea 2 1 Liverpool 我的表单
  • 如何附加到 Visual Studio Code 中的特定进程

    当我在 VSC 中调试 net core 项目时 系统会要求我提供要附加的进程 ID 这显示了一长串正在运行的进程 我可以在其中键入或滚动以查找特定进程 每次我想调试时如何附加到特定的同一进程 在 Visual Studio 代码中 您的调
  • 每 40 毫秒执行一次 php 脚本?

    有没有办法每 40 毫秒执行一次 php 脚本 我不知道cronjob是否是正确的方法 因为每秒25次需要大量CPU 那么 如果 php 不是正确的语言 我应该使用什么语言 我正在制作一个在线游戏 但我需要一些东西来处理游戏中发生的事情 移
  • 在远程服务器上安装 Xdebug (bluehost.com)

    我已经在我的 mac 上安装并运行了 xdebug 但我似乎无法将其安装在我的服务器 bluehost com 服务器 上 我已经尝试了很多年 并希望得到任何可能的帮助 基本上我已经下载了 xdebug so 并将其安装在我的 public
  • ARM 上的 Windows RT 本机代码调用约定是什么?

    我找不到任何有关 Visual Studio C 使用的 Windows RT on ARM 调用约定的文档 微软用的是ARM吗AAPCS http infocenter arm com help topic com arm doc ihi
  • 如何对全文索引搜索 SQL 的两列执行 CONTAINS()

    我有一个包含以下列的表 MyTable Col1 NameID VARCHAR 50 主键不为空 Col2 地址 VARCHAR 255 数据示例 名称 1 24 地址 主街1234号 在使用默认参数创建目录后 我在表上创建了全文索引 我怎
  • 在 C/C++ 中使用音频的绝对初学者指南?

    我一直对音频转换软件感到好奇 但我从未见过从初学者的角度正确解释如何编写一个简单的程序 例如将 mp3 文件转换为 wav 文件 我不是询问所涉及的任何复杂算法 只是使用简单库的一个小示例 在 SO 上搜索 我想出了几个名字 包括 Lame
  • Visual Studio 2012 快捷键 从 aspx 到 Code Behind 和 Code Behind 到 aspx

    我想知道从Code Behind访问aspx和aspx访问Code Behind页面的快捷键 比较明确的回复 From ASPX page to code behind press F7 From CodeBehind to ASPX Pa
  • Firefox 不显示网站图标

    我创建了 favicon ico 文件并在 HTML head 标签中声明它 IE 8 和 Opera 可以很好地处理它 但 FireFox 甚至不会尝试加载它 正如我从我的 Fiddler 调试代理中看到的那样 我尝试了许多不同的类型 i
  • 同时访问0x10f10df48,但修改需要独占访问

    我正在进行 swift4 迁移 并且出现此警告 这使我的应用程序非常慢 同时访问0x10f10df48 但修改需要独占访问 on line else if context KVOContext keyPath contentSizeKeyP
  • 列出外部进程正在运行的线程

    有时我们的客户会使用 幽灵 应用程序 这意味着当我们在很长时间 例如 72 小时以上 后关闭应用程序时 我们有时会看到应用程序在视觉上已关闭但仍在进程列表中 由于我们无法轻松重现 因此我们想知道哪个线程仍在运行 所以我们想提供一个非常小的工
  • 如何解决循环依赖

    我有3项服务 auth service ts account service ts http service ts 当用户注册时 我应该创建新帐户 因此我将 account service ts 导入到 auth service ts 我应
  • 在 Python 3 中拼出日期的每个单词

    在Python 3中 我想将2018 01 01更改为 2018年一月一日 我查看了格式指南Python 日期时间文档 https docs python org 3 library datetime html strftime and s
  • Visual Studio 2012:我可以在远程调试器中启动 .NET 4.5 应用程序(而不仅仅是附加)吗?

    平台 Visual Studio 2012 C WPF应用程序 Visual Studio 2012 远程调试器工具 我在 64 位系统上的 NET 4 5 应用程序在很早的阶段就崩溃了 https stackoverflow com qu
  • 使用getline后如何让cin工作?

    因此 我使用 cin getline str 10 h 读取了一个字符串 如您所见 我使用了自定义分隔符 h 并且希望读取最多 9 个字符 完成此操作后 我使用 cin gt gt n 将一个整数读入我的 int 变量 n 中 includ
  • 当用 R 抓取网页并且它没有价值时如何报告 NA?

    我从 booking com 的页面上抓取数据并创建数据框 我注意到并非所有酒店都有评级 我尝试过这个例如 Got the elements from Inspect code of the page titles page lt page