This is a web-scraping exercise to get the latest updates of stocks on the nifty-50 list.

First get the rvest package

library(rvest)

Load the url

 link <- read_html("https://www.moneycontrol.com/stocks/marketstats/indexcomp.php?optex=NSE&opttopic=indexcomp&index=9")
 link %>%
   html_node("title") %>%
   html_text()
[1] "Index Composition Nse, Stock/Share Indices, Sensex Indices, Composition Index, Stocks Gain / Lost"

Get the list from the tab;e in the page

urls <-  link %>%
  html_node(xpath = '//*[@id="mc_mainWrapper"]/div[3]/div[1]/div[6]/div[2]/div/table') %>%
  html_table()

urls

See the size of the data frame

dim(urls)
[1] 50  6

Clean the data from the first name column since it is not readble

# Init an empty stock list
stock_list = {}

for (items in c(1:nrow(urls))) {
  # Extract name of scrip
  stock_name <- as.character(urls[items,1])
  
  stock_name <- gsub(pattern = "list|Add to Watch|Add to Portfolio|\n|\t|\r", replacement = "", x = stock_name)
  print(paste0("stock names : ", stock_name))  
  stock_list[items] <- stock_name
}
[1] "stock names : Adani Ports"
[1] "stock names : Asian Paints"
[1] "stock names : Axis Bank"
[1] "stock names : Bajaj Auto"
[1] "stock names : Bajaj Finance"
[1] "stock names : Bajaj Finserv"
[1] "stock names : Bharti Airtel"
[1] "stock names : Bharti Infratel"
[1] "stock names : BPCL"
[1] "stock names : Britannia"
[1] "stock names : Cipla"
[1] "stock names : Coal India"
[1] "stock names : Dr Reddys Labs"
[1] "stock names : Eicher Motors"
[1] "stock names : GAIL"
[1] "stock names : Grasim"
[1] "stock names : HCL Tech"
[1] "stock names : HDFC"
[1] "stock names : HDFC Bank"
[1] "stock names : Hero Motocorp"
[1] "stock names : Hindalco"
[1] "stock names : HUL"
[1] "stock names : ICICI Bank"
[1] "stock names : Indiabulls Hsg"
[1] "stock names : IndusInd Bank"
[1] "stock names : Infosys"
[1] "stock names : IOC"
[1] "stock names : ITC"
[1] "stock names : JSW Steel"
[1] "stock names : Kotak Mahindra"
[1] "stock names : Larsen"
[1] "stock names : M&M"
[1] "stock names : Maruti Suzuki"
[1] "stock names : NTPC"
[1] "stock names : ONGC"
[1] "stock names : Power Grid Corp"
[1] "stock names : Reliance"
[1] "stock names : SBI"
[1] "stock names : Sun Pharma"
[1] "stock names : Tata Motors"
[1] "stock names : Tata Steel"
[1] "stock names : TCS"
[1] "stock names : Tech Mahindra"
[1] "stock names : Titan Company"
[1] "stock names : UltraTechCement"
[1] "stock names : UPL"
[1] "stock names : Vedanta"
[1] "stock names : Wipro"
[1] "stock names : Yes Bank"
[1] "stock names : Zee Entertain"
length(stock_list)
[1] 50
stock_list[50]
[1] "Zee Entertain"

create a new dataframe of the stock price list

# Create dataframe of stock list
df_nifty50 <- data.frame(stock_names=stock_list,urls[2:6])
dim(df_nifty50)
[1] 50  6
names(df_nifty50)
[1] "stock_names"    "Industry"       "LastPrice"      "Change"         "X.Chg"         
[6] "Mkt.Cap.Rs.cr."
head(df_nifty50)

display the proper stocks list

df_nifty50
LS0tCnRpdGxlOiAiTmlmdHkgNTAiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoaXMgaXMgYSB3ZWItc2NyYXBpbmcgZXhlcmNpc2UgdG8gZ2V0IHRoZSBsYXRlc3QgdXBkYXRlcyBvZiBzdG9ja3Mgb24gdGhlIG5pZnR5LTUwIGxpc3QuCgpGaXJzdCBnZXQgdGhlIHJ2ZXN0IHBhY2thZ2UKYGBge3J9CmxpYnJhcnkocnZlc3QpCmBgYAoKTG9hZCB0aGUgdXJsCgpgYGB7cn0KIGxpbmsgPC0gcmVhZF9odG1sKCJodHRwczovL3d3dy5tb25leWNvbnRyb2wuY29tL3N0b2Nrcy9tYXJrZXRzdGF0cy9pbmRleGNvbXAucGhwP29wdGV4PU5TRSZvcHR0b3BpYz1pbmRleGNvbXAmaW5kZXg9OSIpCiBsaW5rICU+JQogICBodG1sX25vZGUoInRpdGxlIikgJT4lCiAgIGh0bWxfdGV4dCgpCmBgYAoKCkdldCB0aGUgbGlzdCBmcm9tIHRoZSB0YWI7ZSBpbiB0aGUgcGFnZQoKYGBge3J9CnVybHMgPC0gIGxpbmsgJT4lCiAgaHRtbF9ub2RlKHhwYXRoID0gJy8vKltAaWQ9Im1jX21haW5XcmFwcGVyIl0vZGl2WzNdL2RpdlsxXS9kaXZbNl0vZGl2WzJdL2Rpdi90YWJsZScpICU+JQogIGh0bWxfdGFibGUoKQoKdXJscwpgYGAKCgpTZWUgdGhlIHNpemUgb2YgdGhlIGRhdGEgZnJhbWUKCmBgYHtyfQpkaW0odXJscykKYGBgCgoKQ2xlYW4gdGhlIGRhdGEgZnJvbSB0aGUgZmlyc3QgbmFtZSBjb2x1bW4gc2luY2UgaXQgaXMgbm90IHJlYWRibGUKCmBgYHtyfQojIEluaXQgYW4gZW1wdHkgc3RvY2sgbGlzdApzdG9ja19saXN0ID0ge30KCmZvciAoaXRlbXMgaW4gYygxOm5yb3codXJscykpKSB7CiAgIyBFeHRyYWN0IG5hbWUgb2Ygc2NyaXAKICBzdG9ja19uYW1lIDwtIGFzLmNoYXJhY3Rlcih1cmxzW2l0ZW1zLDFdKQogIAogIHN0b2NrX25hbWUgPC0gZ3N1YihwYXR0ZXJuID0gImxpc3R8QWRkIHRvIFdhdGNofEFkZCB0byBQb3J0Zm9saW98XG58XHR8XHIiLCByZXBsYWNlbWVudCA9ICIiLCB4ID0gc3RvY2tfbmFtZSkKICBwcmludChwYXN0ZTAoInN0b2NrIG5hbWVzIDogIiwgc3RvY2tfbmFtZSkpICAKICBzdG9ja19saXN0W2l0ZW1zXSA8LSBzdG9ja19uYW1lCn0KYGBgCgoKYGBge3J9Cmxlbmd0aChzdG9ja19saXN0KQpzdG9ja19saXN0WzUwXQpgYGAKCgpjcmVhdGUgYSBuZXcgZGF0YWZyYW1lIG9mIHRoZSBzdG9jayBwcmljZSBsaXN0CmBgYHtyfQojIENyZWF0ZSBkYXRhZnJhbWUgb2Ygc3RvY2sgbGlzdApkZl9uaWZ0eTUwIDwtIGRhdGEuZnJhbWUoc3RvY2tfbmFtZXM9c3RvY2tfbGlzdCx1cmxzWzI6Nl0pCmRpbShkZl9uaWZ0eTUwKQpgYGAKCgpgYGB7cn0KbmFtZXMoZGZfbmlmdHk1MCkKYGBgCgoKYGBge3J9CmhlYWQoZGZfbmlmdHk1MCkKYGBgCgoKZGlzcGxheSB0aGUgcHJvcGVyIHN0b2NrcyBsaXN0IAoKYGBge3J9CmRmX25pZnR5NTAKYGBgCgoK