r - 从 rvest R 中的属性中抓取名称(值)

标签 r web-scraping rvest

我想抓取以下网页(允许..):

https://www.bisafans.de/pokedex/listen/numerisch.php

目的是提取如下表格:

<表类="s-表"> <头> 数字 名称 type1 type2 <正文> 001 比萨姆 普兰兹 礼物 002 ... ... ...

我能够抓取表格的编号和名称,但我无法提取类型,因为它们被隐藏为图像标题:

>img src="https://media.bisafans.de/f630aa6/typen/pflanze.png" alt="Pflanze"<

如何在 alt 之后提取名称?我已经尝试过提取整个表格,它只提取数字和名称。另一种方法是 html_attr() , 但也不起作用。

有人知道我怎样才能做到这一点吗?

最佳答案

使用正确的 css 选择器列表并将数据处理为嵌套 map_dfr(data.frame()) 调用中的表行列表,这非常简单。

data.frame() 中,您可以利用当 css 选择器列表在 DOM 中不匹配时返回的事实 NA 以确保列长度相等。为每个可能的列条目指定一个选择器列表。

library(tidyverse)
library(rvest)

rows <- read_html("https://www.bisafans.de/pokedex/listen/numerisch.php") %>% html_elements(".table tbody tr")

df <- map_dfr(rows, ~ data.frame(
  `Nr.` = .x %>% html_element("td:first-child") %>% html_text(),
  `Pokémon` = .x %>% html_element("a") %>% html_text(),
  `Type1` = .x %>% html_element("td:last-child > a:nth-child(odd) > img") %>% html_attr("alt"),
  `Type2` = .x %>% html_element("td:last-child > a:nth-child(even) > img") %>% html_attr("alt")
))

关于r - 从 rvest R 中的属性中抓取名称(值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71619233/

相关文章:

r - 结合group_by和distinct

java - 寻找 "web-scraping script builder"

r - 如何使用 rvest 检索 google 搜索中的超链接

r - 如何将 read_html 的输出保存和读取为 RDS 文件?

r - 收到错误 "' xreg' 和 'newxreg' 有不同的列数”

r - 基于 R 中的另一个向量创建一个向量?

r - 如何只删除连续的重复行?

python - 在 scrapy 中返回第一个遇到的结果

python - BeautifulSoup |如何在 <a> 标签内分隔多个属性

r - 从电子邮件下载链接并将该文件调用到 R