r - rvest 正确检查 html_text
问题描述
我正在尝试使用此函数分别根据<a class="boy" href="/boys-names">Male</a>
男孩或<a class="girl" href="/girls-names">Female</a>
女孩的以下元素来获取姓名列表的性别。
library(rvest)
gender_from_name <- function(name){
name_url <- paste("https://nameberry.com/babyname/", name, sep = "")
is_it_a_boy <- read_html(name_url) %>%
html_nodes(".girl") %>%
html_text(trim=TRUE) %>%
length() == 0
return (if(is_it_a_boy){"Male"}else{"Female"})
}
但是,它不适用于 say gender_from_name("Aaron")
。我试过了,length()<2
但它仍然关闭......
解决方案
这是一种直接返回性别的方法。您正在查找具有 class=meta-section 的“span”节点下的“span”节点下的“a”节点下的文本。
library(rvest)
gender_from_name <- function(name){
name_url <- paste("https://nameberry.com/babyname/", name, sep = "")
is_it_a_boy <- read_html(name_url)
gender <- is_it_a_boy %>%
html_nodes("span.meta-section span a") %>%
html_text(trim=TRUE)
return (gender)
}
gender_from_name("Aaron")
gender_from_name("Mary")
gender_from_name("William")
gender_from_name("Dianne")
推荐阅读
- java - Java 8 按一个地方的属性对列表进行分组
- android - AOSP - 默认启动器在哪里寻找要显示的应用程序
- javascript - 如何在 WebAssembly 数据段中存储十六进制值(即原始字节)
- mongodb - Play Framework 应用程序和嵌入式数据库打包
- perl - perl 使用选项/开关调用另一个 perl 脚本
- c++ - 在 printme 函数中,它将所有 false 设置为 true
- python - 如何在 .py 文件上使用 %timeit?
- java - 使用 AtomicInteger 的多线程不起作用
- python - 如何从用熊猫读取的txt文件中将参数放入for循环中?
- vb.net - 使面板滚动条无效