考虑到示例 HTML 页面,如何在 R 中使用 rvest 提取数据框?
How to use rvest in R to extract a dataframe considering the example HTML page?
我有这个:html
下面是可用的 link:
的一个小表示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Busca Textual - Currículo Lattes</title>
<div class="resultado">
<ol type="1" start="1">
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:100%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">100%</div></div><b><a href="javascript:abreDetalhe('K4247104P1','Beatriz_Castro_Dias_Cuyabano',11678670,)">Beatriz Castro Dias Cuyabano</a></b> <br>Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University, Dinamarca(2014)<br>Pesquisadora do Institut National de la Recherche Agronomique , França<br><br></li>
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:99%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">99%</div></div><b><a href="javascript:abreDetalhe('K4440769J3','Fernando_Domingues_Kümmel_Tria',35889969,)">Fernando Domingues Kümmel Tria</a></b> <br>Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel, Alemanha(2018)<br><br></li>
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:99%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">99%</div></div><b><a href="javascript:abreDetalhe('K4437977A8','Isadora_Alonso_Correa',29437672,)">Isadora Alonso Correa</a></b> <br><span class="tooltip coautor" alt="Pesquisador com bolsa de desenvolvimento tecnológico e industrial vigente no CNPq">Bolsista de Desenvolvimento Tecnológico Industrial A</span><br>Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro, Brasil(2020)<br>Aluno mestrado da Universidade Federal do Rio de Janeiro , Brasil<br><br></li>
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:99%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">99%</div></div><b><a href="javascript:abreDetalhe('K4275806J6','Yuri_Tani_Utsunomiya',19925978,)">Yuri Tani Utsunomiya</a></b> <br>Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho, FCAV-Jaboticabal, Brasil(2017)<br>Jovem Docente Permanente, FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho , Brasil<br><br></li>
</ol></div>
</body></html>
Html 视图:
100%
Beatriz Castro Dias Cuyabano
Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University, Dinamarca(2014)
Pesquisadora do Institut National de la Recherche Agronomique , França
99%
Fernando Domingues Kümmel Tria
Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel, Alemanha(2018)
99%
Isadora Alonso Correa
Bolsista de Desenvolvimento Tecnológico Industrial A
Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro, Brasil(2020)
Aluno mestrado da Universidade Federal do Rio de Janeiro , Brasil
99%
Yuri Tani Utsunomiya
Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho, FCAV-Jaboticabal, Brasil(2017)
Jovem Docente Permanente, FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho , Brasil
如何在 R 中创建具有以下结构的数据框 a:
#
name
CAPES
graduation
inf1
country.Grad
year
inf2
inf3
country
1
Beatriz Castro Dias Cuyabano
NA
Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University
NA
Dinamarca
2014
NA
Pesquisadora do Institut National de la Recherche Agronomique
França
2
Fernando Domingues Kümmel Tria
NA
Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel
NA
Alemanha
2018
NA
NA
NA
3
Isadora Alonso Correa
Bolsista de Desenvolvimento Tecnológico Industrial A
Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro
NA
Brasil
2020
NA
Aluno mestrado da Universidade Federal do Rio de Janeiro
Brasil
4
Yuri Tani Utsunomiya
NA
Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho
FCAV-Jaboticabal
Brasil
2017
Jovem Docente Permanente
FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho
Brasil
...
...
...
...
...
...
...
...
...
...
info <- html %>%
html_nodes(xpath = '/html/body/div/ol') %>%
html_elements(.,"li")%>% data.frame()
我正在使用这段代码,但没有成功。如何正确制作此数据框?
我可以帮到你这么远,但你需要一个可靠而强大的正则表达式来将当前在 text1
和 text2
中的文本分隔到所需的数据列中:
library(rvest)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
html <- read_html("~/Documents/tmp.html")
h <- html %>%
html_nodes(xpath = '/html/body/div/ol')
name <- h %>% html_elements(.,"li a") %>%
html_text()
l <- h %>%
html_elements(.,"li")
capes <- lapply(l, function(x)x %>%
html_elements("span") %>%
html_text())
capes <- sapply(capes, function(x)ifelse(length(x) == 0, "", x))
other <- h %>% html_elements(.,"li") %>%
sapply(., function(x)x %>%
html_elements(xpath = "text()") %>%
html_text())
o2 <- sapply(other, function(x)x[2])
o3 <- sapply(other, function(x)ifelse(length(x) == 3, x[3], ""))
out <- data.frame(name = name,
CAPES = capes,
text1 = o2,
text2 = o3)
out
#> name
#> 1 Beatriz Castro Dias Cuyabano
#> 2 Fernando Domingues Kümmel Tria
#> 3 Isadora Alonso Correa
#> 4 Yuri Tani Utsunomiya
#> CAPES
#> 1
#> 2
#> 3 Bolsista de Desenvolvimento Tecnológico Industrial A
#> 4
#> text1
#> 1 Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University, Dinamarca(2014)
#> 2 Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel, Alemanha(2018)
#> 3 Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro, Brasil(2020)
#> 4 Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho, FCAV-Jaboticabal, Brasil(2017)
#> text2
#> 1 Pesquisadora do Institut National de la Recherche Agronomique , França
#> 2
#> 3 Aluno mestrado da Universidade Federal do Rio de Janeiro , Brasil
#> 4 Jovem Docente Permanente, FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho , Brasil
由 reprex package (v2.0.1)
于 2022-04-17 创建
我想我已经包含了除“inf1”和“inf2”之外的所有内容。
page <- read_html("https://prequest.websiteseguro.com/tests/")
data <- tibble(
number = 1:length(page %>% html_nodes("li a") %>% html_text2()),
capes = page %>%
html_elements("li") %>%
map(. %>%
html_node("span") %>%
html_text2) %>%
unlist(),
name = page %>% html_nodes("li a") %>% html_text2(),
graduation = 1:length(page %>% html_nodes("li a") %>% html_text2()) %>%
map( ~ page %>%
html_element(
xpath = paste0("/html/body/div[1]/ol/li[",
.x, "]/text()[2]")
) %>%
html_text2) %>%
unlist,
inf3 = 1:length(page %>% html_nodes("li a") %>% html_text2()) %>%
map( ~ page %>%
html_element(
xpath = paste0("/html/body/div[1]/ol/li[",
.x, "]/text()[3]")
) %>%
html_text2) %>%
unlist
) %>%
separate(sep = "(, )(?!.*\1)",
col = graduation,
into = c("graduation", "grad_country")) %>%
separate(col = grad_country,
sep = "\(",
into = c("grad_country", "year")) %>%
mutate(year = year %>% parse_number()) %>%
separate(col = inf3,
sep = "(, )(?!.*\1)",
into = c("inf3", "country"))
Output
# A tibble: 5,349 x 7
number name graduation grad_country year inf3 country
<int> <chr> <chr> <chr> <dbl> <chr> <chr>
1 1 Beatriz Castro Dias Cuyabano Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University Dinamarca 2014 "Pes~ França
2 2 Caroline Mello Pimentel Schuabb Doutorado em Ciências Naturais pelo Technische Universität Dortmund Alemanha 2016 "Pro~ Brasil
3 3 Eduardo da Cruz Gouveia Pimentel Doutorado em Zootecnia (Producao Animal) pela Universidade Estadual Paulista ~ Brasil 2007 "Wis~ Aleman~
4 4 Julio Scliar Rerin Doutorado em Medicina pela University of Münster Alemanha 2001 "Méd~ Brasil
5 5 Márcio Fernando Ribeiro de Resende Júnior Doutorado em Genetics and Genomics pela University of Florida Estados Uni~ 2014 "Ass~ Estado~
6 6 Diego Padilha Rubert Doutorado em Ciência da Computação pela Universidade Federal de Mato Grosso d~ Brasil 2019 "Pro~ Brasil
7 7 Rodrigo Furtado dos Santos Doutorado em Plant Molecular and Cellular Biology pela University of Florida Estados Uni~ 2020 "Cie~ Brasil
8 8 Nádia Maria Vieira Sampaio Doutorado em Cell and Molecular Biology pela Colorado State University Estados Uni~ 2018 "Pes~ Brasil
9 9 Elisa Peripolli Doutorado em Genética e Melhoramento Animal pela Universidade Estadual Paulis~ Brasil 2021 NA NA
10 10 Camila Ferreira Azevedo Doutorado em Estatística Aplicada e Biometria pela Universidade Federal de Vi~ Brasil 2015 "Mem~ Brasil
# ... with 5,339 more rows
我有这个:html
下面是可用的 link:
的一个小表示<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Busca Textual - Currículo Lattes</title>
<div class="resultado">
<ol type="1" start="1">
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:100%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">100%</div></div><b><a href="javascript:abreDetalhe('K4247104P1','Beatriz_Castro_Dias_Cuyabano',11678670,)">Beatriz Castro Dias Cuyabano</a></b> <br>Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University, Dinamarca(2014)<br>Pesquisadora do Institut National de la Recherche Agronomique , França<br><br></li>
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:99%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">99%</div></div><b><a href="javascript:abreDetalhe('K4440769J3','Fernando_Domingues_Kümmel_Tria',35889969,)">Fernando Domingues Kümmel Tria</a></b> <br>Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel, Alemanha(2018)<br><br></li>
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:99%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">99%</div></div><b><a href="javascript:abreDetalhe('K4437977A8','Isadora_Alonso_Correa',29437672,)">Isadora Alonso Correa</a></b> <br><span class="tooltip coautor" alt="Pesquisador com bolsa de desenvolvimento tecnológico e industrial vigente no CNPq">Bolsista de Desenvolvimento Tecnológico Industrial A</span><br>Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro, Brasil(2020)<br>Aluno mestrado da Universidade Federal do Rio de Janeiro , Brasil<br><br></li>
<li><div class="relevancia tooltip" alt="Score: indicador da freqüência relativa dos termos de busca sobre o(s) currículo(s) encontrados."><div class="barra"><div style="width:99%"></div></div><div class="porcentagem" style="font-size:9px; font-weight:normal">99%</div></div><b><a href="javascript:abreDetalhe('K4275806J6','Yuri_Tani_Utsunomiya',19925978,)">Yuri Tani Utsunomiya</a></b> <br>Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho, FCAV-Jaboticabal, Brasil(2017)<br>Jovem Docente Permanente, FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho , Brasil<br><br></li>
</ol></div>
</body></html>
Html 视图:
100%
Beatriz Castro Dias Cuyabano
Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University, Dinamarca(2014)
Pesquisadora do Institut National de la Recherche Agronomique , França
99%
Fernando Domingues Kümmel Tria
Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel, Alemanha(2018)
99%
Isadora Alonso Correa
Bolsista de Desenvolvimento Tecnológico Industrial A
Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro, Brasil(2020)
Aluno mestrado da Universidade Federal do Rio de Janeiro , Brasil
99%
Yuri Tani Utsunomiya
Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho, FCAV-Jaboticabal, Brasil(2017)
Jovem Docente Permanente, FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho , Brasil
如何在 R 中创建具有以下结构的数据框 a:
# | name | CAPES | graduation | inf1 | country.Grad | year | inf2 | inf3 | country |
---|---|---|---|---|---|---|---|---|---|
1 | Beatriz Castro Dias Cuyabano | NA | Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University | NA | Dinamarca | 2014 | NA | Pesquisadora do Institut National de la Recherche Agronomique | França |
2 | Fernando Domingues Kümmel Tria | NA | Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel | NA | Alemanha | 2018 | NA | NA | NA |
3 | Isadora Alonso Correa | Bolsista de Desenvolvimento Tecnológico Industrial A | Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro | NA | Brasil | 2020 | NA | Aluno mestrado da Universidade Federal do Rio de Janeiro | Brasil |
4 | Yuri Tani Utsunomiya | NA | Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho | FCAV-Jaboticabal | Brasil | 2017 | Jovem Docente Permanente | FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho | Brasil |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
info <- html %>%
html_nodes(xpath = '/html/body/div/ol') %>%
html_elements(.,"li")%>% data.frame()
我正在使用这段代码,但没有成功。如何正确制作此数据框?
我可以帮到你这么远,但你需要一个可靠而强大的正则表达式来将当前在 text1
和 text2
中的文本分隔到所需的数据列中:
library(rvest)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
html <- read_html("~/Documents/tmp.html")
h <- html %>%
html_nodes(xpath = '/html/body/div/ol')
name <- h %>% html_elements(.,"li a") %>%
html_text()
l <- h %>%
html_elements(.,"li")
capes <- lapply(l, function(x)x %>%
html_elements("span") %>%
html_text())
capes <- sapply(capes, function(x)ifelse(length(x) == 0, "", x))
other <- h %>% html_elements(.,"li") %>%
sapply(., function(x)x %>%
html_elements(xpath = "text()") %>%
html_text())
o2 <- sapply(other, function(x)x[2])
o3 <- sapply(other, function(x)ifelse(length(x) == 3, x[3], ""))
out <- data.frame(name = name,
CAPES = capes,
text1 = o2,
text2 = o3)
out
#> name
#> 1 Beatriz Castro Dias Cuyabano
#> 2 Fernando Domingues Kümmel Tria
#> 3 Isadora Alonso Correa
#> 4 Yuri Tani Utsunomiya
#> CAPES
#> 1
#> 2
#> 3 Bolsista de Desenvolvimento Tecnológico Industrial A
#> 4
#> text1
#> 1 Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University, Dinamarca(2014)
#> 2 Doutorado em Evolução molecular pelo Christian-Albrechts-Universität zu Kiel, Alemanha(2018)
#> 3 Doutorado em Ciências (Microbiologia) pela Universidade Federal do Rio de Janeiro, Brasil(2020)
#> 4 Doutorado em Medicina Veterinária (Reprodução Animal) pela Universidade Estadual Paulista Júlio de Mesquita Filho, FCAV-Jaboticabal, Brasil(2017)
#> text2
#> 1 Pesquisadora do Institut National de la Recherche Agronomique , França
#> 2
#> 3 Aluno mestrado da Universidade Federal do Rio de Janeiro , Brasil
#> 4 Jovem Docente Permanente, FMVA-UNESP da Universidade Estadual Paulista Júlio de Mesquita Filho , Brasil
由 reprex package (v2.0.1)
于 2022-04-17 创建我想我已经包含了除“inf1”和“inf2”之外的所有内容。
page <- read_html("https://prequest.websiteseguro.com/tests/")
data <- tibble(
number = 1:length(page %>% html_nodes("li a") %>% html_text2()),
capes = page %>%
html_elements("li") %>%
map(. %>%
html_node("span") %>%
html_text2) %>%
unlist(),
name = page %>% html_nodes("li a") %>% html_text2(),
graduation = 1:length(page %>% html_nodes("li a") %>% html_text2()) %>%
map( ~ page %>%
html_element(
xpath = paste0("/html/body/div[1]/ol/li[",
.x, "]/text()[2]")
) %>%
html_text2) %>%
unlist,
inf3 = 1:length(page %>% html_nodes("li a") %>% html_text2()) %>%
map( ~ page %>%
html_element(
xpath = paste0("/html/body/div[1]/ol/li[",
.x, "]/text()[3]")
) %>%
html_text2) %>%
unlist
) %>%
separate(sep = "(, )(?!.*\1)",
col = graduation,
into = c("graduation", "grad_country")) %>%
separate(col = grad_country,
sep = "\(",
into = c("grad_country", "year")) %>%
mutate(year = year %>% parse_number()) %>%
separate(col = inf3,
sep = "(, )(?!.*\1)",
into = c("inf3", "country"))
Output
# A tibble: 5,349 x 7
number name graduation grad_country year inf3 country
<int> <chr> <chr> <chr> <dbl> <chr> <chr>
1 1 Beatriz Castro Dias Cuyabano Doutorado em Quantitative Genetics and Biostatistics pela Aarhus University Dinamarca 2014 "Pes~ França
2 2 Caroline Mello Pimentel Schuabb Doutorado em Ciências Naturais pelo Technische Universität Dortmund Alemanha 2016 "Pro~ Brasil
3 3 Eduardo da Cruz Gouveia Pimentel Doutorado em Zootecnia (Producao Animal) pela Universidade Estadual Paulista ~ Brasil 2007 "Wis~ Aleman~
4 4 Julio Scliar Rerin Doutorado em Medicina pela University of Münster Alemanha 2001 "Méd~ Brasil
5 5 Márcio Fernando Ribeiro de Resende Júnior Doutorado em Genetics and Genomics pela University of Florida Estados Uni~ 2014 "Ass~ Estado~
6 6 Diego Padilha Rubert Doutorado em Ciência da Computação pela Universidade Federal de Mato Grosso d~ Brasil 2019 "Pro~ Brasil
7 7 Rodrigo Furtado dos Santos Doutorado em Plant Molecular and Cellular Biology pela University of Florida Estados Uni~ 2020 "Cie~ Brasil
8 8 Nádia Maria Vieira Sampaio Doutorado em Cell and Molecular Biology pela Colorado State University Estados Uni~ 2018 "Pes~ Brasil
9 9 Elisa Peripolli Doutorado em Genética e Melhoramento Animal pela Universidade Estadual Paulis~ Brasil 2021 NA NA
10 10 Camila Ferreira Azevedo Doutorado em Estatística Aplicada e Biometria pela Universidade Federal de Vi~ Brasil 2015 "Mem~ Brasil
# ... with 5,339 more rows