library(stringr)
 library(rvest)
library(ggplot2)

Obtención de la página web

# se leen los datos de la página de interés usando read_html
 
  dirPag<-'https://es.wikipedia.org/wiki/Anexo:Episodios_de_Los_Simpson'
  
  pag<- read_html(dirPag,encoding = 'UTF-8')  

Obtención partes de la página

  tablasPag<- html_table(pag,fill=TRUE)
  
  length(tablasPag)
## [1] 25

Selección de estructura con los datos de interés

# obtener la tabla de interés, en este caso es la #3
   
  datosFranq<- tablasPag[[2]]
   
  head(datosFranq)
## # A tibble: 6 × 8
##   Temporada  Temporada Episodios Episodios `Emisión original` `Emisión original`
##   <chr>      <chr>     <chr>     <chr>     <chr>              <chr>             
## 1 "Temporad… Temporada Episodios Episodios Primera emisión    Última emisión    
## 2 ""         1         13        13        17 de diciembre d… 13 de mayo de 1990
## 3 ""         2         22        22        11 de octubre de … 11 de julio de 19…
## 4 ""         3         24        24        19 de septiembre … 27 de agosto de 1…
## 5 ""         4         22        22        24 de septiembre … 13 de mayo de 1993
## 6 ""         5         22        22        30 de septiembre … 19 de mayo de 1994
## # ℹ 2 more variables: `Audiencia promedio` <chr>, Posición <chr>
  str(datosFranq)
## tibble [38 × 8] (S3: tbl_df/tbl/data.frame)
##  $ Temporada         : chr [1:38] "Temporada" "" "" "" ...
##  $ Temporada         : chr [1:38] "Temporada" "1" "2" "3" ...
##  $ Episodios         : chr [1:38] "Episodios" "13" "22" "24" ...
##  $ Episodios         : chr [1:38] "Episodios" "13" "22" "24" ...
##  $ Emisión original  : chr [1:38] "Primera emisión" "17 de diciembre de 1989" "11 de octubre de 1990" "19 de septiembre de 1991" ...
##  $ Emisión original  : chr [1:38] "Última emisión" "13 de mayo de 1990" "11 de julio de 1991" "27 de agosto de 1992" ...
##  $ Audiencia promedio: chr [1:38] "Audiencia promedio" "13.4" "12.2" "12.0" ...
##  $ Posición          : chr [1:38] "Posición" "30[3]​" "38[4]​" "33[5]​" ...

Selección de datos de interés

  # Elegir las columnas de interés:  Franchise, Year of inception, Total Revenue
  # y Revenue breakdown.  La tabla ya está ordenada por Total Revenue por lo que
  # se descarta la columna Number
   
   
   datosFranq<-datosFranq[,2:3]
  
   colnames(datosFranq)<-c('Temporada','Episodio')
  
   head(datosFranq)
## # A tibble: 6 × 2
##   Temporada Episodio 
##   <chr>     <chr>    
## 1 Temporada Episodios
## 2 1         13       
## 3 2         22       
## 4 3         24       
## 5 4         22       
## 6 5         22

Proceso de limpieza de los datos

# Eliminar filas con NA 
datosFranq <- datosFranq[complete.cases(datosFranq), ]

# Ver los resultados
print(datosFranq)
## # A tibble: 38 × 2
##    Temporada Episodio 
##    <chr>     <chr>    
##  1 Temporada Episodios
##  2 1         13       
##  3 2         22       
##  4 3         24       
##  5 4         22       
##  6 5         22       
##  7 6         25       
##  8 7         25       
##  9 8         25       
## 10 9         25       
## # ℹ 28 more rows

Gráfico de barras con el total de episodios por temporada.

ggplot(datosFranq, aes(x = Temporada, y = Episodio)) +
  geom_bar(stat = "identity", alpha = 0.8) +
  labs(title = "Episodios por Temporada de Los Simpson",
       x = "Temporada", 
       y = "Número de Episodios") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        axis.text.x = element_text(angle = 45, hjust = 1),
        legend.position = "none")