我想要得到的
来自这里列出的每个网站:https://www.nndb.com/lists/494/000063305/
这是一个individual site,所以观众可以看到单页。
我正在尝试在this site之后对我的R代码建模,但这很困难,因为在各个网站上没有针对性别的标题,例如。有人可以帮忙吗?
library(purrr)
library(rvest)
url_base <- "https://www.nndb.com/lists/494/000063305/"
b_dataset <- map_df(1:91, function(i) {
page <- read_html(sprintf(url_base, i))
data.frame(ICOname = html_text(html_nodes(page, ".name")))
})
我会把你带到那里一半:从这里搞清楚并不难。
library(purrr)
library(rvest)
url_base <- "https://www.nndb.com/lists/494/000063305/"
首先,以下将生成A-Z姓氏列表URL列表,然后生成每个人的个人资料URL。
## Gets A-Z links
all_surname_urls <- read_html(url_base) %>%
html_nodes(".newslink") %>%
html_attrs() %>%
map(pluck(1, 1))
all_ppl_urls <- map(
all_surname_urls,
function(x) read_html(x) %>%
html_nodes("a") %>%
html_attrs() %>%
map(pluck(1, 1))
) %>%
unlist()
all_ppl_urls <- setdiff(
all_ppl_urls[!duplicated(all_ppl_urls)],
c(all_surname_urls, "http://www.nndb.com/")
)
你是对的---没有单独的性别标题或其他标题,真的。您只需使用SelectorGadget等工具来查看哪些元素包含您需要的内容。在这种情况下,它只是p
。
all_ppl_urls[1] %>%
read_html() %>%
html_nodes("p") %>%
html_text()
输出将是
[1] "AKA Lee William Aaker"
[2] "Born: 25-Sep-1943Birthplace: Los Angeles, CA"
[3] "Gender: MaleRace or Ethnicity: WhiteOccupation: Actor"
[4] "Nationality: United StatesExecutive summary: The Adventures of Rin Tin Tin"
...
虽然输出不干净,但在网页编写时很少发生 - 这实际上相对容易一些。您可以使用grepl
和map
系列对您需要的内容进行子集化,并从中生成数据帧。