Web Scraping
En este ejercicio realizarás una pequeño script para hacer web
scraping sobre el sitio web de un periódico.
¿Qué es web scraping?
“El web scraping se refiere al proceso de extracción de contenidos y
datos de sitios web mediante software”. Es decir, es
conseguir de forma automatizada información de uno o varios sitios
web.
Ejercicio
En este ejercicio vamos a conseguir la información de las noticias
que publica el periódico La Jornada en su sección de Últimas noticias.
En su página, el periódico comparte 200 notas con sus fotos,
encabezados, resúmenes y vínculos a estas. En una primera fase del
ejercicio se van a extraer sólamente los encabezados de cada
noticia.
Código
Lo primero que se va a necesitar para hacer web scraping con R es
instalar las dependencias necesarias. En este caso se va a usar:
rvest. La instalación se hará mediante la instrucción
install.packages(‘rvest’)
install.packages('rvest')
Hecho esto, lo siguiente es llamar a esta biblioteca. La instrucción es
library(rvest).
library(rvest)
Con la biblioteca instalada, el siguiente paso es el de la extracción
del contenido.
- La primer instrucción descarga el html de la página.
- Con el código descargado en la variable pagina se extraen
todos los elementos con la clase nota
- De estos elementos, se va a extraer el encabezado de cada uno.
# Descarga de la página web
pagina <- read_html("https://www.jornada.com.mx/ultimasnoticias")
# Extracción de elementos generales
notas <- pagina %>% html_elements(".nota")
# Extracción de los encabezados
Encabezados <- notas %>% html_element("h3") %>% html_text2()
Comprobación
Para saber que se han descargado y extraído correctamente los datos,
se puede obtener una muestra del contenido de las variables mediante la
instrucción head.
head(Encabezados)
[1] "Obligatorio para las personas candidatas participar en los tres debates oficiales: INE"
[2] "Humo de cigarro activa alarma de incendio en el INE"
[3] "Hallan más de $150 mil en billetes falsos en casa de Iztacalco"
[4] "Fallece chofer de tráiler tras persecución en autopista México-Querétaro"
[5] "Nueva orden al Ejército de no destruir u ocultar documentos relacionados con 'guerra sucia'"
[6] "\"Trump no se puede meter con México\": Álvarez Máynez"
LS0tDQp0aXRsZTogIlNjcmFwZXIgQsOhc2ljbyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgV2ViIFNjcmFwaW5nDQoNCkVuIGVzdGUgZWplcmNpY2lvIHJlYWxpemFyw6FzIHVuYSBwZXF1ZcOxbyBzY3JpcHQgcGFyYSBoYWNlciB3ZWIgc2NyYXBpbmcgc29icmUgZWwgc2l0aW8gd2ViIGRlIHVuIHBlcmnDs2RpY28uDQoNCiMjIMK/UXXDqSBlcyB3ZWIgc2NyYXBpbmc/DQoNCiJFbCB3ZWIgc2NyYXBpbmcgc2UgcmVmaWVyZSBhbCBwcm9jZXNvIGRlIGV4dHJhY2Npw7NuIGRlIGNvbnRlbmlkb3MgeSBkYXRvcyBkZSBzaXRpb3Mgd2ViIG1lZGlhbnRlIHNvZnR3YXJlIlteMV0uIEVzIGRlY2lyLCBlcyBjb25zZWd1aXIgZGUgZm9ybWEgYXV0b21hdGl6YWRhIGluZm9ybWFjacOzbiBkZSB1bm8gbyB2YXJpb3Mgc2l0aW9zIHdlYi4NCg0KDQpbXjFdOiBSZWN1cGVyYWRvIGRlIDxodHRwczovL2tpbnN0YS5jb20vZXMvYmFzZS1kZS1jb25vY2ltaWVudG8vcXVlLWVzLXdlYi1zY3JhcGluZy8+IGVsIDE4IGRlIGVuZXJvIGRlIDIwMjQNCg0KIyMgRWplcmNpY2lvDQoNCkVuIGVzdGUgZWplcmNpY2lvIHZhbW9zIGEgY29uc2VndWlyIGxhIGluZm9ybWFjacOzbiBkZSBsYXMgbm90aWNpYXMgcXVlIHB1YmxpY2EgZWwgcGVyacOzZGljbyBMYSBKb3JuYWRhIGVuIHN1IHNlY2Npw7NuIGRlIMOabHRpbWFzIG5vdGljaWFzLg0KRW4gc3UgcMOhZ2luYSwgZWwgcGVyacOzZGljbyBjb21wYXJ0ZSAyMDAgbm90YXMgY29uIHN1cyBmb3RvcywgZW5jYWJlemFkb3MsIHJlc8O6bWVuZXMgeSB2w61uY3Vsb3MgYSBlc3Rhcy4gRW4gdW5hIHByaW1lcmEgZmFzZSBkZWwgZWplcmNpY2lvIHNlIHZhbiBhIGV4dHJhZXIgc8OzbGFtZW50ZSBsb3MgZW5jYWJlemFkb3MgZGUgY2FkYSBub3RpY2lhLg0KDQojIyBDw7NkaWdvDQoNCkxvIHByaW1lcm8gcXVlIHNlIHZhIGEgbmVjZXNpdGFyIHBhcmEgaGFjZXIgd2ViIHNjcmFwaW5nIGNvbiBSIGVzIGluc3RhbGFyIGxhcyBkZXBlbmRlbmNpYXMgbmVjZXNhcmlhcy4gRW4gZXN0ZSBjYXNvIHNlIHZhIGEgdXNhcjogKipydmVzdCoqLiBMYSBpbnN0YWxhY2nDs24gc2UgaGFyw6EgbWVkaWFudGUgbGEgaW5zdHJ1Y2Npw7NuIGluc3RhbGwucGFja2FnZXMoJ3J2ZXN0JykNCg0KDQpgYGB7ciBJbnN0YWxhY2nDs24gZGUgYmlibGlvdGVjYX0NCg0KaW5zdGFsbC5wYWNrYWdlcygncnZlc3QnKQ0KDQpgYGANCkhlY2hvIGVzdG8sIGxvIHNpZ3VpZW50ZSBlcyBsbGFtYXIgYSBlc3RhIGJpYmxpb3RlY2FbXjJdLiBMYSBpbnN0cnVjY2nDs24gZXMgbGlicmFyeShydmVzdCkuDQoNClteMl06IFZhbW9zIGEgZW50ZW5kZXIgcG9yIGJpYmxpb3RlY2EgYSB1biBncnVwbyBkZSBwcm9ncmFtYXMgcHJlaGVjaG9zIHF1ZSBpbmNsdXllbiBmdW5jaW9uZXMgYWRpY2lvbmFsZXMgYSBsYXMgcXVlIG9mcmVjZSBlbCBsZW5ndWFqZSBiYXNlLg0KDQpgYGB7ciBBc2lnbmFjacOzbiBkZWwgbcOzZHVsb30NCg0KbGlicmFyeShydmVzdCkNCg0KYGBgDQoNCg0KQ29uIGxhIGJpYmxpb3RlY2EgaW5zdGFsYWRhLCBlbCBzaWd1aWVudGUgcGFzbyBlcyBlbCBkZSBsYSBleHRyYWNjacOzbiBkZWwgY29udGVuaWRvLiANCg0KMS4gICAgTGEgcHJpbWVyIGluc3RydWNjacOzbiBkZXNjYXJnYSBlbCBodG1sIGRlIGxhIHDDoWdpbmEuIA0KMi4gICAgQ29uIGVsIGPDs2RpZ28gZGVzY2FyZ2FkbyBlbiBsYSB2YXJpYWJsZSBfcGFnaW5hXyBzZSBleHRyYWVuIHRvZG9zIGxvcyBlbGVtZW50b3MgY29uIGxhIGNsYXNlICpub3RhKg0KMy4gICAgRGUgZXN0b3MgZWxlbWVudG9zLCBzZSB2YSBhIGV4dHJhZXIgZWwgZW5jYWJlemFkbyBkZSBjYWRhIHVuby4gDQoNCmBgYHtyfQ0KDQojIERlc2NhcmdhIGRlIGxhIHDDoWdpbmEgd2ViDQpwYWdpbmEgPC0gcmVhZF9odG1sKCJodHRwczovL3d3dy5qb3JuYWRhLmNvbS5teC91bHRpbWFzbm90aWNpYXMiKQ0KDQojIEV4dHJhY2Npw7NuIGRlIGVsZW1lbnRvcyBnZW5lcmFsZXMNCg0Kbm90YXMgPC0gcGFnaW5hICU+JSBodG1sX2VsZW1lbnRzKCIubm90YSIpIA0KDQojIEV4dHJhY2Npw7NuIGRlIGxvcyBlbmNhYmV6YWRvcw0KDQpFbmNhYmV6YWRvcyA8LSBub3RhcyAlPiUgaHRtbF9lbGVtZW50KCJoMyIpICU+JSBodG1sX3RleHQyKCkNCg0KYGBgDQoNCiMjIyBDb21wcm9iYWNpw7NuDQoNClBhcmEgc2FiZXIgcXVlIHNlIGhhbiBkZXNjYXJnYWRvIHkgZXh0cmHDrWRvIGNvcnJlY3RhbWVudGUgbG9zIGRhdG9zLCBzZSBwdWVkZSBvYnRlbmVyIHVuYSBtdWVzdHJhIGRlbCBjb250ZW5pZG8gZGUgbGFzIHZhcmlhYmxlcyBtZWRpYW50ZSBsYSBpbnN0cnVjY2nDs24gaGVhZC4NCg0KYGBge3IgQ29tcHJvYmFjacOzbiBFbmNhYmV6YWRvc30NCg0KaGVhZChFbmNhYmV6YWRvcykNCg0KYGBgDQoNCg==