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
url  <- "https://www.goodreads.com/list/show/1.Best_Books_Ever"
page <- read_html(url)
rank   <- page |> html_nodes("td.number") |> html_text()
title  <- page |> html_nodes("a.bookTitle span") |> html_text()
author <- page |> html_nodes("a.authorName span") |> html_text()
score_text <- page |> html_nodes("span.smallText.uitext") |> html_text()
title <- gsub("\\s*\\(.*\\)", "", title)
title <- trimws(title)

score_text <- gsub("\\s+", " ", score_text)
score <- sub(".*score: ([0-9,]+).*", "\\1", score_text)
score <- as.numeric(gsub(",", "", score))
Warning: NAs introduced by coercion
books <- data.frame(
  Rank   = as.numeric(rank),
  Title  = title,
  Author = trimws(author),
  Score  = score
)

head(books)
  Rank                                     Title          Author   Score
1    1                          The Hunger Games Suzanne Collins      NA
2    2                       Pride and Prejudice     Jane Austen 4566990
3    3                     To Kill a Mockingbird      Harper Lee      NA
4    4 Harry Potter and the Order of the Phoenix    J.K. Rowling 3095908
5    5                            The Book Thief    Markus Zusak      NA
6    6                                  Twilight Stephenie Meyer 2683165
nrow(books)  
[1] 200