热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

爬虫:在网易财经抓取表格数据案例

(1)数据网址获取网易财经和新浪财经等网站的数据可以免费获取,我们可以使用爬虫方法(通过rvest包)抓取相应网站的表格数据,我们首先以在网易财经中抓取600550在2019年第3

1)数据网址获取

网易财经和新浪财经等网站的数据可以免费获取,我们可以使用爬虫方法(通过rvest包)抓取相应网站的表格数据,我们首先以在网易财经中抓取600550在2019年第3季度的数据为例,其网址为:

http://quotes.money.163.com/trade/lsjysj_600550.html?year=2019&season=3,

可以看到不同时间段的网址是有规律的,只需要更改其中的股票代码和year、season就可以进行多个股票的循环网页抓取。

2)网络表格数据节点获取

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

表格部分的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股股票数据进行实时更新,可以通过这种方法来建立自己的数据库进行实时分析。同时通过网络爬虫,我们还可以爬取很多有意义的数据,并进行实时更新。

 


推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
author-avatar
淘气小顽童刘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有