Использование rvest для извлечения ссылок (включая пустые строки) - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь извлечь ссылки из таблицы, используя rvest.Таблица также содержит строки без ссылки.Поскольку мне нужно объединить ссылки на исходную таблицу, необходимо включить пустые строки.html_attr ("href") пропускает эти строки, что делает невозможным объединение ссылок на исходную таблицу.

Так, например, этот код получает таблицу с обычным текстом /

library("rvest")

url <- "http://en.wikipedia.org/wiki/List_of_The_Simpsons_episodes"

simp <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[3]') %>%
  html_table() %>% 
  extract2(1)

Этот код извлекает ссылки:

simp2 <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[3]/tbody/tr/td[3]/a')%>%
  html_attr("href")

А потом я хочу сделать что-то вроде

cbind(simp1,simp2)

Но это не работает, так как таблица состоит из 23 строк, и естьвсего 13 ссылок.Кто-нибудь знает, как заставить html_attr включать пустые строки, чтобы вектор simp2 также имел 23 значения (с 10 NA или что-то в этом роде)?Или с другой функцией?

1 Ответ

1 голос
/ 14 апреля 2019

Вы можете перебирать набор узлов (без a!):

library(purrr)
simp2 <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[3]/tbody/tr/td[3]') %>%
  map_chr(~html_attr(html_node(., "a"), "href"))

, что дает вам вектор длины 23:

str(simp2)
# chr [1:23] "/wiki/Lance_Kramer" "/wiki/Mark_Kirkland" ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...