我正在写一个脚本,用R从互联网上抓取分析师的股票评级和当前股价(使用RStudio);
library(rvest)
BKGURL <- 'http://www.marketbeat.com/stocks/LON/BKG/' #analysts
BKGwebpage <- read_html(BKGURL)
BKGhtml <- html_nodes(BKGwebpage, "td:nth-child(5) , td:nth-child(4) , td:nth- child(3) , td:nth-child(2) , td:nth-child(1)")
BKG <- html_text(BKGhtml) #imports analyst text
BKGprice <- 'http://markets.investorschronicle.co.uk/research/Markets/Companies/Summary?s=BKG:LSE'
BKGpricewebpage <- read_html(BKGprice)
BKGpriceHTML <- html_nodes(BKGpricewebpage, "#wsod td.first")
BKGgbpp <- html_text(BKGpriceHTML) #imports current share price in text在数据框中编译它们之前;( INN的代码没有显示,以节省空间)
Code <- c('BKG', 'INN')
Analysts_Opinion <- c(BKG [2], INN [2])
Consensus <- c(BKG [4], INN [4])
Price_target <- c(BKG [6], INN [6])
Last_rating <- c(BKG [7], INN [7])
Current_price <- c(BKGgbpp [1], INNgbpp [1])
Scrapev1 <- data.frame(Code, Analysts_Opinion, Consensus, Price_target, Last_rating, Current_price)然后Scrapev1给出了
Code Analysts_Opinion Consensus Price_target Last_rating Current_price
1 BKG 2 Sell Rating(s), 6 Hold Rating(s), 8 Buy Rating(s) Hold (Score: 2.38) GBX 3,434.29 7/26/2016 2,650
2 INN 1 Buy Rating(s) Buy (Score: 3.00) GBX 190 2/2/2016 198.00因此,代码可以很好地导入数据,但我需要重复/复制顶部面板中的代码350次,将每个URL和名称中的349个其他代码更改为"BKG“。目前我不知道该怎么做,因为复制和粘贴都需要相当长的时间,当然在R中有一种更快的方法?
任何关于如何解决这个问题的帮助或建议都将不胜感激。如果代码草率,很抱歉,我已经通过使用这个网站自学了(差劲)R,并且来自药理学背景-对技术感兴趣!
发布于 2016-08-13 01:07:01
您可以使用字符串,然后对其进行解析和计算。但是,我不建议您这样做。在我看来,最好的方法是使用列表和名称。类似于:
library(rvest)
auxlist<- c('BKG', 'ASD', 'QWE')
URLS <- c() # Or list()
webpages <- list()
# etc...
for(comp in auxlist){
URLS[[comp]] <- paste0('http://www.marketbeat.com/stocks/LON/', comp, '/')
webpages[[comp]] <- read_html(URLS[[comp]])
# etc...
}https://stackoverflow.com/questions/38923100
复制相似问题