c爬虫抓取网页数据(不同时间段的网络表格数据节点获取需要注意的事项!)

优采云 发布时间: 2021-11-17 03:01

  c爬虫抓取网页数据(不同时间段的网络表格数据节点获取需要注意的事项!)

  (1)数据URL获取

  网易财经、新浪财经等网站数据可免费获取。我们可以使用爬虫方法(通过rvest包)抓取对应的网站表数据。首先,我们可以在网易财经抢到600550,以2019年第三季度的数据为例。它的网站是:

  ,

  可以看出,不同时间段的网址是有规律的,只需更改其中的股票代码、年份和季节即可循环抓取多只股票。

  (2)Web 表数据节点获取

  我们需要解析网页表格数据的节点。除了系统地掌握网页设计的原理和基本结构,我们还可以通过FireFox(Firebug插件)和Chrome浏览器解析网页结构,得到相应的分支结构点。这里我们使用火狐浏览器,具体操作是在找到我们需要的表格位置后(请探讨如何找到表格位置),右键复制XPath路径。

  table部分的XPath是/html/body/div[2]/div[4]/table[1]。

  

  (3) 抓取单个股票的单页数据

  library(rvest)

symbol=600550

year=2019

season=3

url=paste0("http://quotes.money.163.com/trade/lsjysj_",symbol,".html?year=",year,"&season=",season)

web=read_html(url)

xpath="/html/body/div[2]/div[4]/table[1]"

web.table=web%>%html_nodes(xpath=xpath)%>%html_table()

  此时的web.table就是爬取到的数据

  (4) 从单个股票的多个页面抓取并合并数据

  library(lubridate)

symbol=600550

from="2001-05-28"

from=as.Date(from)

to=Sys.Date()

time.index=seq(from=from,to=to,by="quarter")#生成以季度为开始的时间序列

year.id=year(time.index)#获取年份

quarter.id=quarter(time.index)#获取季度

price=list()

for(t in 1:length(time.index)){

year=year.id[t]

season=quarter.id[t]

url=paste0("http://quotes.money.163.com/trade/lsjysj_",symbol,".html?year=",year,"&season=",season)

web=read_html(url)

xpath="/html/body/div[2]/div[4]/table[1]"

web.table=web%>%html_nodes(xpath=xpath)%>%html_table()

web.table=web.table[[1]][-1,]

price[[t]]=web.table

}

  (5) 多只股票多页数据抓取合并

  get.wangyi.stock=function(symbol,from,to){

from=as.Date(from)

to=as.Date(to)

if(mday(from==1)){

from=from-1

}

time.index=seq(from=from,to=to,by="quarter")

year.id=year(time.index)

quarter.id=quarter(time.index)

prices=list()

for(t in 1:length(time.index)){

year=year.id[t]

season=quarter.id[t] url=paste0("http://quotes.money.163.com/trade/lsjysj_",symbol,".html?year=",year,"&season=",season)

web=read_html(url)

xpath="/html/body/div[2]/div[4]/table[1]"

web.table=web%>%html_nodes(xpath=xpath)%>%html_table()

web.table=web.table[[1]][-1,]

prices[[t]]=web.table

}

}

to=Sys.Date()

stock.index=matrix(nrow=6,ncol=2)

stock.index[,1]=c("600550.ss","600192.ss","600152.ss","600644.ss","600885.ss","600151.ss")

stock.index[,2]=c("2017-05-28","2017-05-28","2017-05-28","2017-05-28","2017-05-28","2017-05-28")

for(i in nrow(stock.index)){

symbol=stock.index[i,1]

from=stock.index[i,2]

prices=get.wangyi.stock(symbol,from,to)

filenames=paste0("D://dataset//",symbol,".csv")

}

  (6) 读取所有A股数据

  我们也可以将所有A股代码整理成一个文件,阅读后实时更新所有A股*敏*感*词*。这个方法可以用来建立我们自己的数据库进行实时分析。同时,通过网络爬虫,我们也可以抓取到很多有意义的数据,并实时更新。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线