Этот код должен дать вам то, что вам нужно, или, по крайней мере, ближе к нему. Я воспользовался твоим вторым примером. Я бы наверное удалил первый ряд.
final <- as.character(my_pg %>% html_nodes('select > option'))
df <- data.frame(do.call(rbind, strsplit(final, '>', fixed=TRUE)), stringsAsFactors = FALSE)
df$X1 <-sapply(strsplit(df$X1, '=', fixed=TRUE), "[", 2 )
df$X1 <- gsub('[\"]', '', df$X1)
df$X2 <-sapply(strsplit(df$X2, '<', fixed=TRUE), "[", 1 )
df = subset(df, select = -c(X3) )
выход
X1 X2
1 <NA> Select a location
2 1104 Xercise4Less Bolton Gym
3 1248 Xercise4Less Bradford Gym
4 1249 Xercise4Less Brierley Hill Gym
5 1250 Xercise4Less Bristol Gym
6 1251 Xercise4Less Burnley Gym