问财财经搜索是同花顺旗下的服务之一,主要针对上市公司的公告、研报、即时新闻等提供搜索及参考资料。
相对于其他股票软件来说,一个强大之处在于用自然语言就可以按你指定的条件进行筛选。而大部分现有的行情软件支持的都不是很好,写起来就费尽心思,还不一定能行。
然而问财有一个缺陷在于它只能获取一天的股票相关信息。如果,我们希望实现抓取一段时间的股票历史信息,就要通过网页批量抓取。
事实上,我们可以通过制作一个爬虫软件来自己定义时间日期和搜索的关键词,并且批量下载一定日期范围的数据。
我们以抓取每天的收盘价大于均线上股票数目为例子,用r来实现抓取:
例如需要获取10月12日的数据,在问财里输入下面的关键词即可
查看搜索结果链接,我们可以看到关键词在链接中的显示规则
因此,我们在r中可以通过制作一个时间段的伪链接来向服务器不断发送搜索请求,从而实现一段日期数据的批量抓取
url=paste("http://www.iwencai.com/stockpick/search?typed=1&preParams=&ts=1&f=1&qs=result_rewrite&selfsectsn=&querytype=&searchfilter=&tid=stockpick&w=",as.character(as.Date(i, origin = "1970-01-01")) ,input2)
然后,我们查看其中一天的网页源代码,可以找到对应股票数据的xml源码
因此,可以通过编写一个html_value 函数来获取这个xmlValue
xpath <- '//div[@class=\"natl_words long_words\"]/span[@class=\"natl_num\"]'
html_value <- function(url,xpath){
webpage <- getURL(url)
webpage <- readLines(tc <- textConnection(webpage)); close(tc)
pagetree <- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
value <- getNodeSet(pagetree,xpath)
##i <- length(value)##统计满足条件的值个数,一般情况为1
# value1 <- xmlValue(value[[ 1]])
# value2 <- xmlValue(value[[ 2]])
# value3 <- xmlValue(value[[ 3]])
# value4 <- xmlValue(value[[ 4]])
value1=character(0)
for(i in 1:length(value))value1[i] <- xmlValue(value[[ i]])
return(value1)
}
然后封装成一个函数,就可以任意下载一段时间内几个关键词所对应的股票数据了。
最后可以将爬取到的数据批量输出到一个excel文件中,从而方便后续的分析。
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!