Rvest 从 select 中提取选项值和文本

2024-05-05

Rvest 选择选项,我认为用可重现的示例来解释是最简单的

网站:http://www.verema.com/vinos/portada http://www.verema.com/vinos/portada我想获取葡萄酒的类型(Tipos de Vinos),在html代码中是:

<select class="campo select" id="producto_tipo_producto_id" name="producto[tipo_producto_id]">
<option value="">Todos</option>
<option value="211">Tinto</option>
<option value="213">Blanco</option>
<option value="215">Rosado</option>
<option value="216">Espumoso</option>
<option value="217">Dulces y Generosos</option></select>

XPath :  //*[@id="producto_tipo_producto_id"]  or
CSS : #producto_tipo_producto_id  or
Class: campo select

我想要一个 data.frame 作为

211 廷托

第213章 布兰科

第215章 罗萨多

216 埃斯普莫索

217 杜尔塞斯和慷慨

我的代码(R):

library(rvest)

Pagina.R <- html(x = "http://www.verema.com/vinos/portada")

text <- Pagina.R %>% 
  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
  html_text() 
text

values <- Pagina.R %>% 
  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
  html_attr("option value")       #problem????
values

Res <- data.frame(text = text, values = values, stringsAsFactors = FALSE)
Res  # problem  

建议?

谢谢。


Update

修改后的功能代码:

library(rvest)

Pagina.R <- html(x = "http://www.verema.com/vinos/portada")

text <- Pagina.R %>% 
#  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]/option')%>%
  html_text() 
text

values <- Pagina.R %>% 
#  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]')%>%
  html_nodes(xpath='//*[@id="producto_tipo_producto_id"]/option')%>%
   # html_attr("option value") 
  html_attr("value") 
values

Res <- data.frame(text = text, values = values, stringsAsFactors = FALSE)
Res 

这是可以考虑的另一种方法:

library(RSelenium)

shell('docker run -d -p 4446:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4446L, browserName = "firefox")
url <- "http://www.verema.com/vinos/portada"
remDr$open()
remDr$navigate(url)
remDr$screenshot(TRUE)

web_Obj_Accept <- remDr$findElement("id", "cookies-todas")
web_Obj_Accept$clickElement()

list_Web_Obj_Product_Of_Vine <- remDr$findElements("class name", "vrm-Search_Filter-vinos")
list_Type_Wine <- lapply(X = list_Web_Obj_Product_Of_Vine, FUN = function(x) x$getElementText()[[1]])

nb_Type_Wine <- length(list_Type_Wine)
list_Values <- list()

for(i in 1 : nb_Type_Wine)
{
  id <- tolower(paste0("producto_vino_", list_Type_Wine[[i]]))
  id <- stringr::str_replace_all(id, pattern = " y ", replacement = "_")
  id <- stringr::str_replace_all(id, pattern = "dulces_generosos", replacement = "dulce_generoso")
  web_Obj <- remDr$findElement("id", id)
  list_Values[[i]] <- web_Obj$getElementAttribute("value")
}

vec_Type_Wine <- unlist(list_Type_Wine)
vec_Values <- unlist(list_Values)

df <- data.frame(wine_Type = vec_Type_Wine, values = vec_Values)
df

        wine_Type values
1              Todos       
2              Tinto    211
3             Blanco    213
4             Rosado    215
5             Vermut    237
6           Espumoso    216
7 Dulces y Generosos    217
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rvest 从 select 中提取选项值和文本 的相关文章

随机推荐

  • 关闭网站的 IE 8 兼容模式

    我的公司使用IE8作为默认浏览器 并且默认为所有内联网站点设置兼容模式 我正在构建一个在关闭兼容模式时可以工作的 Intranet 站点 我正在使用 Reset css 和几个开源 JavaScript 程序 例如数据表 我想做的是强制关闭
  • 如何使用 Google Drive API 通过服务帐户访问域中的共享文件?

    我一直在尝试从 Python 3 7 脚本访问有关 Google Shared Drive 文件的一些简单信息 上次修改共享云端硬盘上的 Google 表格文件的时间 我创建了一个服务帐户在 GCP Drive API 菜单中 它可以通过
  • CakePHP Facebook 集成与 CakePHP-Facebook-Plugin 的注销问题

    我正在寻找一种方法CakePHP Facebook 插件 https github com webtechnick CakePHP Facebook Plugin让用户退出我的应用程序 但不让他们退出他们自己的 Facebook 如果我调用
  • XSD 格式

    该 XSD 部分来自 http www iana org assignments xml registry schema netconf xsd http www iana org assignments xml registry sche
  • 在另一个数组的每隔一个元素之后插入一个数组中的元素(一次一个)(不均匀拉链)

    合并两个数组的优雅方法是什么 使得生成的数组具有第一个数组中的两个项目 后跟第二个数组中的单个项目 以这种方式重复 array1 A1 A2 A3 A4 A5 potentially longer array2 B1 B2 B3 B4 B5
  • Django - 在启动时执行代码

    我正在使用 Django 1 9 3 我有一个包含多个应用程序的项目 我想在项目启动时更新其中一个应用程序的表 用例 例如 假设我想在我的网站上销售商品 我有一个包含模型项目的应用程序 我在 Django 之外有一个网络服务 它提供服务 g
  • 使用 WebListener 或 OWIN 作为 Azure Service Fabric 的 API 网关

    我们在服务结构中有 4 个无状态服务微服务 它们使用 Kestrel 作为服务器 我们需要向前端公开这 4 个服务 并且对使用 WebListener 还是 OWIN 作为服务器有疑问 任何人都可以告诉谁对性能更好 我们还有用于处理令牌的身
  • cytoscape.js。对于边缘线段,将坐标转换为线段距离和线段权重

    我想与社区分享一个有用的函数 该函数从坐标 PointX PointY 返回线段距离和线段权重 我从工具 例如draw io 创建图表 并且在使用多个路点制作边缘 线段样式 时 该免费软件通过其坐标提供路点 不幸的是 最新版本的 cytos
  • 如何检测文本文件中大于 n 的一系列“空洞”(孔、与模式不匹配的线)?

    Case scenario cat Status txt 1 connected 2 connected 3 connected 4 connected 5 connected 6 connected 7 disconnected 8 di
  • 类型错误: jasmine.getEnv().currentSpec 为 null

    当我尝试运行我的茉莉花规格时 我得到 TypeError jasmine getEnv currentSpec is null in http localhost 8888 JASMINE ROOT jasmine js line 498
  • 我在 wamp for PHP 路径中遇到错误

    我的 wamp 服务器图标当前为橙色 这意味着 3 个服务器中只有 2 个正在运行 我无法打开 phpmyadmin 页面 因为它给出 404 未找到错误 如果我右键单击底部的 wamp 图标 则会收到一条错误消息 Error C wamp
  • 学院/大学数据 API [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试构建一个应用程序 允许用户查找特定大学并查看有关该大学的数据 录取率 SAT 分数 规模等 但
  • Python 用 lambda 函数封闭作用域变量

    我写了这个简单的代码 def makelist L for i in range 5 L append lambda x i x return L 好的 现在我打电话 mylist makelist 因为稍后调用嵌套函数时会查找封闭范围变量
  • 如何找到我的 typescript/react 模块的声明?

    我对前端技术非常 非常 陌生 特别是 React 和 TypeScript 当尝试做一件简单的事情 即使用反应组件时 我的问题出现了https github com ckeditor ckeditor5 https github com c
  • Yacc/Bison:伪变量($$、$1、$2、..)以及如何使用 printf 打印它们

    我有一个用 flex 编写的词法分析器 它将标记传递给用 bison 编写的解析器 以下是我的词法分析器的一小部分 ID a z a z0 9 rule printf A rule s n yytext return RULE ID pri
  • 使用 neo4j 建模有序树

    我刚刚开始使用 neo4j 并且了解图形和关系的原理 但是我在想要建模的某些结构方面遇到了一些麻烦 我想在编程语言项目中使用它 并存储已解析源文件的 AST 从那里 我计划向节点添加大量额外的数据和关系 以帮助分析和工具 但基本的 AST
  • 将箱线图与 Wilcoxon 检验进行比较

    我正在使用 R 中的 ggplot2 包比较两组长度 不同的个体 和箱线图 我想比较这两个分布 但到目前为止我发现使用 wilcoxon 测试的唯一方法是 ggpubr 包中的 stat compare means 这是比较分布的正确方法吗
  • 汇编基础知识:输出寄存器值

    我刚刚开始学习汇编语言 我已经陷入了 在屏幕上显示存储在寄存器中的十进制值 的部分 我使用 emu8086 任何帮助将不胜感激 model small Specifies the memory model used for program
  • Python:从 apache authnz_ldap 获取用户

    我正在通过 Apache2 的 authnz ldap 模块成功验证 ldap 用户 我不清楚如何在他们登录后获取他们的用户名 以便我可以通过任何以下表单 网页与他们交互 我尝试过典型的方法 os getenv os environ get
  • Rvest 从 select 中提取选项值和文本

    Rvest 选择选项 我认为用可重现的示例来解释是最简单的 网站 http www verema com vinos portada http www verema com vinos portada我想获取葡萄酒的类型 Tipos de