项目目的:每日抓取大盘几个股的上一个交易日的收盘价格数据,并自动发送邮件
首先加载所要用到的R包:
library(rvest) library(dplyr) library(htmlTable) #整合网页 library(mailR) #用来发邮件
抓取上证指数数据,以网易财经的股票数据为抓取目标页
url_szzs <- 'http://quotes.money.163.com/trade/lsjysj_zhishu_000001.html' website_szzs <- read_html(url_szzs) table_szzs <- html_table(website_szzs, fill = TRUE) data_szzs <- table_szzs[[4]]
抓取深圳成指数据
url_szcz <- 'http://quotes.money.163.com/trade/lsjysj_zhishu_399001.html' website_szcz <- read_html(url_szcz) table_szcz <- html_table(website_szcz, fill = TRUE) data_szcz <- table_szcz[[4]]
抓取格力电器个股数据
url_gldq <- 'http://quotes.money.163.com/trade/lsjysj_000651.html#06f01' website_gldq <- read_html(url_gldq) table_gldq <- html_table(website_gldq, fill = TRUE) data_gldq <- table_gldq[[4]]
抓取分众传媒个股数据
url_fzcm <- 'http://quotes.money.163.com/trade/lsjysj_002027.html#06f01' website_fzcm <- read_html(url_fzcm) table_fzcm <- html_table(website_fzcm, fill = TRUE) data_fzcm <- table_fzcm[[4]]
抓取科大讯飞个股数据
url_kdxf <- 'http://quotes.money.163.com/trade/lsjysj_002230.html#06f01' website_kdxf <- read_html(url_kdxf) table_kdxf <- html_table(website_kdxf, fill = TRUE) data_kdxf <- table_kdxf[[4]]
最近一次收盘日期
ys_dp<-max(data_szzs$日期) #大盘最近一次收盘日期 ys_gg<-max(data_gldq$日期) #个股最近一次收盘日期
整合大盘数据形成表格
dp_results<-rbind( data.frame( 项目="上证指数" , filter(data_szzs,as.character(data_szzs$日期)==ys_dp) ), data.frame( 项目="深圳成指" , filter(data_szcz,as.character(data_szcz$日期)==ys_dp) ) )
整合个股数据形成表格
gg_results<-rbind( data.frame( 项目="格力电器" , filter(data_gldq,data_gldq$日期==ys_gg) ), data.frame( 项目="分众传媒" , filter(data_fzcm,data_fzcm$日期==ys_gg) ), data.frame( 项目="科大讯飞" , filter(data_kdxf,data_kdxf$日期==ys_gg) ) )
将大盘和个股数据表格转化为网页表格形式
dp_html<-htmlTable(dp_results, rnames = FALSE, align = paste(rep('|c|',ncol(dp_results)),collapse=''), align.header = paste(rep('|c|',ncol(dp_results)),collapse=''), col.columns = c(rep("none", 2), rep("#F5FBFF", 4)), col.rgroup = c("none", "#F7F7F7"), caption = '1、大盘交易情况' ) gg_html<-htmlTable(gg_results, rnames = FALSE, align = paste(rep('|c|',ncol(gg_results)),collapse=''), align.header = paste(rep('|c|',ncol(gg_results)),collapse=''), col.columns = c(rep("none", 2), rep("#F5FBFF", 4)), col.rgroup = c("none", "#F7F7F7"), caption = '2、个股交易情况' )
####合并 html<-paste0(dp_html,gg_html)
最后用mailR发送邮件进行监控
#收件人 recipients <- c("xxx@qq.com") #发件人 sender = "xxx@qq.com" #主题 title = paste0("stock market " ,Sys.Date()) #填上邮箱密码code send.mail( from = sender, to = recipients, subject = title, body = html, encoding = "utf-8", html = TRUE, smtp = list( host.name = "smtp.qq.com", port = 465, user.name = sender, passwd = "xxx", ssl = TRUE ), authenticate = TRUE, send = TRUE )