Bucle para raspar datos de Wikipedia en R
Estoy tratando de extraer datos sobre celebridades / muertes notables para su análisis. Wikipedia tiene una estructura muy regular en sus rutas html con respecto a fechas notables de muerte. Parece que:
https://en.wikipedia.org/wiki/Deaths_in_"MONTH"_"YEAR"
Por ejemplo, este enlace conduce a muertes notables en marzo de 2014.
https://en.wikipedia.org/wiki/Deaths_in_March_2014
He localizado la ubicación CSS de las listas. Necesito ser "" # mw-content-text h3 + ul li "y lo he extraído con éxito para un enlace específico. Ahora estoy tratando de escribir un ciclo para pasar por los meses y cualquier años que elijo. Creo que es un bucle anidado bastante sencillo, pero recibo errores al probarlo solo en 2015.
library(rvest)
data = data.frame()
mlist = c("January","February","March","April","May","June","July","August",
"September","October","November","December")
for (y in 2015:2015){
for (m in 1:12){
site = read_html(paste("https://en.wikipedia.org/wiki/Deaths_in_",mlist[m],
"_",y,collapse=""))
fnames = html_nodes(site,"#mw-content-text h3+ ul li")
text = html_text(fnames)
data = rbind(data,text,stringsAsFactors=FALSE)
}
}
Cuando comento la línea:
data = rbind(data,text,stringsAsFactors=FALSE)
no se devuelven errores, por lo que está claramente relacionado con este bit. Estoy publicando todo mi código para otros comentarios también. El objetivo aquí es recorrer muchos años y luego centrarse en la distribución a lo largo de los años y los meses. Para esto solo necesito mantener la edad, el mes y el año de la muerte.
¡Gracias!
EDITAR: Lo sentimos, técnicamente son advertencias, no errores. Tengo más de 50 de ellos y cuando trato de mirar "datos" es un desastre gigante.
Cuando ejecuto este código no como un bucle en una URL específica, funciona bien y devuelve una salida legible.
site = read_html("https://en.wikipedia.org/wiki/Deaths_in_January_2015")
fnames = html_nodes(site,"#mw-content-text h3+ ul li")
text = html_text(fnames)
Aquí hay un par de filas de ese conjunto de datos:
text[1:5]
[1] "Barbara Atkinson, 88, British actress (Z-Cars).[1]"
[2] "Staryl C. Austin, 94, American air force brigadier general.[2]"
[3] "Ulrich Beck, 70, German sociologist, heart attack.[3]"
[4] "Fiona Cumming, 77, British television director (Doctor Who).[4]"
[5] "Eric Cunningham, 65, Canadian politician, Ontario MPP for Wentworth North (1975–1984).[5]"