मैं आर में एक शुरुआती छात्र हूं, वर्तमान में एनबीए खिलाड़ियों के नाम और वेतन को स्क्रैप करने पर काम कर रहा हूं: http://www.espn.com/nba/salaries/_/year/2019/page/1/सीजनटाइप/3

इस वेबसाइट से मैं सभी 13 पृष्ठों को परिमार्जन करना चाहता हूं

मुझे एक ऐसा फ़ंक्शन मिला है जो मुझे 13 पृष्ठों को प्राप्त करने के बजाय सही मात्रा में टिप्पणियों को परिमार्जन करने देता है। यह पहले पृष्ठ को 13 बार दोहराता है और उन्हें 1 तालिका में रखता है। क्या किसी को पता है कि इसे कैसे ठीक करते हैं? यह मेरी बहुत मदद करेगा



library(httr)
library(tidyverse)
library(dplyr)
library(rvest)
library(readxl)
library(xml2)
library(readxl)
library(tibble)
library(jsonlite)
library(purrr)


salary_by_player = data.frame()

#link <- "http://www.espn.com/nba/salaries/_/year/2019/page/1/seasontype/3"
for(page_result in seq(from = 1, to = 13, by = 1)){
  link = paste("http://www.espn.com/nba/salaries/_/year/2019/page/", page_result, "/seasontype/3")
  page = read_html(link)
  
  name = page %>% html_nodes("td:nth-child(2) a") %>% html_text()
  salary = page %>% html_nodes(".oddrow td:nth-child(4) , .evenrow td:nth-child(4)") %>% html_text()
  salary_by_player = rbind(salary_by_player, data.frame(name, salary, stringsAsFactors = FALSE)) 
  
  print(paste("Page:", page_result))
}


0
Julian Brouwer 19 अक्टूबर 2020, 15:58

1 उत्तर

सबसे बढ़िया उत्तर

समस्या यह है कि paste() डिफ़ॉल्ट रूप से स्ट्रिंग्स में शामिल होने के लिए रिक्त स्थान का उपयोग करता है। आप इस प्रकार sep पैरामीटर निर्दिष्ट करके इसे ठीक कर सकते हैं:

link = paste("http://www.espn.com/nba/salaries/_/year/2019/page/", page_result, "/seasontype/3", sep='')

या पूरी तरह से इस तरह लिखा गया है:

library(rvest)
library(dplyr)
library(xml2)

salary_by_player = data.frame()

for(page_result in seq(from = 1, to = 13, by = 1)){
  link = paste("http://www.espn.com/nba/salaries/_/year/2019/page/", page_result, "/seasontype/3", sep='')
  page = read_html(link)
  
  name = page %>% html_nodes("td:nth-child(2) a") %>% html_text()
  salary = page %>% html_nodes(".oddrow td:nth-child(4) , .evenrow td:nth-child(4)") %>% html_text()
  salary_by_player = rbind(salary_by_player, data.frame(name, salary, stringsAsFactors = FALSE)) 
  
  print(paste("Page:", page_result))
}

0
Thomas Petersen 19 अक्टूबर 2020, 13:55