一文排除R语言傻瓜式抓虫的坑-全面抓取金融数据,零基础版
我们知道想搞金融大数据乃至量化分析,数据是最不可缺少的资源,但是由于很多金融人士对编程语言乃至爬虫的机制并不了解,甚至有些遍及而却步,所以造成了很多有识之士意愿从事兴趣甚至有意愿从事数据分析工作,但是较高的门槛也使很多人无法入门,那么我们这里就制作一个比较全面的教程,让大家能从零开始获得金融数据。
我们知道股票交易的数据分为行情类数字化数据和研究类文本数据两种,其中各券商的研报相对比较难以获得,而获得行情数据相对简单大家想获得A股的交易数据可以参考,https://blog.****.net/BEYONDMA/article/details/85485857文章即可。
咱们接下来可以讲讲如何抓取研报类的数据,我们知道这部分数据相对比较珍贵。各财经网站的反爬机制也相对完善,那么如何把数据抓取下来呢,首先请大家参考https://blog.****.net/BEYONDMA/article/details/86564578来安装自动化抓取工作Rselenium他的好处就是控制浏览器的行为,来获得最终真实的数据。
该工具的工作情况如下图,实现的功能实际上是通过自动化编程的方式来模拟打开网页的过程,自动替代人工将相关金融数据拷贝下来,这样的做法完全屏敝了零基础的同仁们对于TCP,HTTP技通的欠缺,真是相当的方便。而且考虑到每年相关的研报也就是几十万往篇的量级,这种做法的效率问题几乎可以忽略不计,用来做金融数据的获取真是相当的合适。
我们以同花顺网站的股价预测为例,具体代码如下,(请确保在运行之前selenium已经运行,
具体命令如下:java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.9.1.jar(启动sever)
详见https://blog.****.net/BEYONDMA/article/details/86564578):
library(RSelenium)
library(rvest)
remDr <- remoteDriver(
browserName = "chrome",
remoteServerAddr = "localhost",
port = 4444L
)
remDr$open()
url="http://data.10jqka.com.cn/financial/yjyg/"
remDr$navigate(url)
webpage <- read_html(remDr$getPageSource()[[1]][1])
htmtable=html_table(webpage,fill=T)[[2]]
for (i in 2:62)
{
j=i-1
xpathtmp="//*[@id=\"J-ajax-main\"]/div[2]/a[@page=\""
xpathF=paste(xpathtmp,as.character(i),"\"]",sep='')
nextEle=remDr$findElement(using="xpath",value=xpathF)
nextEle$clickElement()
Sys.sleep(2)
webpage <- read_html(remDr$getPageSource()[[1]][1])
htmtabletmp=html_table(webpage,fill=T)[[2]]
htmtable=rbind(htmtable,htmtabletmp)
}
不到5分钟就能抓取3000多条数据,具体数据抓取结果展示如下: