原文参考:http://tecdat.cn/?p=4560
最近我们被客户要求抓取问财财经搜索网页股票数据,包括一些图形和统计输出。
问财财经搜索是同花顺旗下的服务之一,主要针对上市公司的公告、研报、即时新闻等提供搜索及参考资料。相对于其他股票软件来说,一个强大之处在于用自然语言就可以按你指定的条件进行筛选。而大部分现有的行情软件支持的都不是很好,写起来就费尽心思,还不一定能行。
然而问财有一个缺陷在于它只能获取一天的股票相关信息。如果,我们希望实现抓取一段时间的股票历史信息,就要通过网页批量抓取。
事实上,我们可以通过制作一个爬虫软件来自己定义时间日期和搜索的关键词,并且批量下载一定日期范围的数据。
我们以抓取每天的收盘价大于均线上股票数目为例子,用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文件中,从而方便后续的分析。
参考文献
1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用
8.R语言如何做马尔科夫转换模型markov switching model
标签:网页,语言,问财,抓取,rcurl,搜索,爬虫,数据 From: https://www.cnblogs.com/tecdat/p/17773190.html