抓取问财财经搜索网页股票数据

问财财经搜索是同花顺旗下的服务之一,主要针对上市公司的公告、研报、即时新闻等提供搜索及参考资料。

由Kaizong Ye,Coin Ge撰写

相对于其他股票软件来说,一个强大之处在于用自然语言就可以按你指定的条件进行筛选。而大部分现有的行情软件支持的都不是很好,写起来就费尽心思,还不一定能行。

然而问财有一个缺陷在于它只能获取一天的股票相关信息。如果,我们希望实现抓取一段时间的股票历史信息,就要通过网页批量抓取。

事实上,我们可以通过制作一个爬虫软件来自己定义时间日期和搜索的关键词,并且批量下载一定日期范围的数据。

我们以抓取每天的收盘价大于均线上股票数目为例子,用r来实现抓取:


课程

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)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds