70行python代码爬取新浪财经中股票历史成交明细

发布时间:2018-07-28 01:55,

浏览次数:635

, 标签:

python

最近在研究股票量化,想从每笔成交的明细着手,但历史数据的获取便是一个大问题,一些股票证券软件又不能批量导出成交数据。所以,我花了两天时间,成功的从新浪财经爬取了我要的数据

下面开始

新浪股票明细数据接口为

http://market.finance.sina.com.cn/transHis.php?symbol=sz000001&date=2018-07-17&page=3

格式不用多说symbol=股票代码 date=日期 page=页码

进去就可以看到一个表格,这其实就是新浪官方网页中展现出来的,但我们在这里比较好爬取,因为没有其他多余的内容,以前好像是可以直接下载下来的,很不幸现在不行了,但没关系,我们开始爬取

1.先获取整个html,这里我加了个超时重试机制,

def getHtml(url): while True: try: html = urllib.request.urlopen(url,

timeout=5).read() break except: print("超时重试") html = html.decode('gbk') return

html

2.获取列名

def getTitle(tableString): s = r'(?<=.*?([\s\S]*?)(?=)' pat =

re.compile(s) code = pat.findall(tableString) s2 =

r'(?<=

([\s\S]*?)(?=)' pat2 = re.compile(s2) code2 =

pat2.findall(code[0]) s3 = r'(?<=([\s\S]*?)(?=)' pat3 =

re.compile(s3) code3 = pat3.findall(code2[0]) return code3

3.获取所有记录

def getBody(tableString): s = r'(?<=

.*?([\s\S]*?)(?=)' pat =

re.compile(s) code = pat.findall(tableString) s2 =

r'(?<=

([\s\S]*?)(?=)' pat2 = re.compile(s2) code2 =

pat2.findall(code[0]) s3 = r'(?<=(?!]*>' pat3

= re.compile(s3) code3 = [] for tr in code2: code3.append(pat3.findall(tr))

return code3

4.然后用个while把每一页都获取出来,当然还要判断一下是不是到最后一页了,或者其他一些细节

while True: Url = 'http://market.finance.sina.com.cn/transHis.php?symbol=' +

symbol + '&date=' + date + '&page=' + str(page) html = getHtml(Url) table =

getTable(html) if len(table) != 0: tbody = getBody(table[0]) if len(tbody) ==

0: print("结束") break if page == 1: thead = getTitle(table[0]) print(thead) for

tr in tbody: print(tr) else: print("当日无数据") break page += 1

5.输出结果

怎么样,还不错吧,然后导入数据库就可以了

本人学生一枚,自学python没多久,正则表达式也才花了半天时间学的,代码会比较简陋,不足的地方还请多指教

源码:

import urllib.request import re import datetime def getHtml(url): while True:

try: html = urllib.request.urlopen(url, timeout=5).read() break except:

print("超时重试") html = html.decode('gbk') return html def getTable(html): s =

r'(?<=

)' pat =

re.compile(s) code = pat.findall(html) return code def getTitle(tableString): s

= r'(?<=.*?([\s\S]*?)(?=)' pat = re.compile(s) code =

pat.findall(tableString) s2 = r'(?<=

([\s\S]*?)(?=)' pat2 =

re.compile(s2) code2 = pat2.findall(code[0]) s3 =

r'(?<=([\s\S]*?)(?=)' pat3 = re.compile(s3) code3 =

pat3.findall(code2[0]) return code3 def getBody(tableString): s =

r'(?<=

.*?([\s\S]*?)(?=)' pat = re.compile(s) code =

pat.findall(tableString) s2 = r'(?<=

([\s\S]*?)(?=)' pat2 =

re.compile(s2) code2 = pat2.findall(code[0]) s3 =

r'(?<=(?!]*>' pat3 = re.compile(s3) code3 = []

for tr in code2: code3.append(pat3.findall(tr)) return code3 # 股票代码 symbol =

'sz000001' # 日期 dateObj = datetime.datetime(2018, 6, 1) date =

dateObj.strftime("%Y-%m-%d") # 页码,因为不止1页,从第一页开始爬取 page = 1 while True: Url =

'http://market.finance.sina.com.cn/transHis.php?symbol=' + symbol + '&date=' +

date + '&page=' + str(page) html = getHtml(Url) table = getTable(html) if

len(table) != 0: tbody = getBody(table[0]) if len(tbody) == 0: print("结束")

break if page == 1: thead = getTitle(table[0]) print(thead) for tr in tbody:

print(tr) else: print("当日无数据") break page += 1

python 爬取财经新闻股票_70行python代码爬取新浪财经中股票历史成交明细相关推荐

  1. python 爬取财经新闻_Python光大证券中文云系统——爬取新浪财经新闻

    [任务目标] 调通光大证券中文云系统 [任务进度] 依据Github光大证券中文云系统开源的说明文档,应该是分爬虫模块.检索模块.统计模块.关键词频模块和关键词网络模块,是一个整体非常庞大的系统.现在 ...

  2. c4d python使用方法_Cinema 4D Python脚本编写必须知道的5行Python代码教程

    Cinema 4D Python脚本编写必须知道的5行Python代码教程 在这期Cinema 4D python教程中的第一篇.Alpha Pixel将介绍如何使用python脚本进行设置,并查看一 ...

  3. python 爬取财经新闻股票_Python进阶量化交易专栏场外篇20-爬虫抓取股票论坛帖子...

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  4. python 爬取财经新闻_如何用 100 行 Python 代码实现新闻爬虫?

    CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 每天我都要坐地铁上班,而地铁里完全没有手机信号.但我希望在坐地铁的时候读些新闻,于是就写了下面这个新闻爬虫. 我 ...

  5. python 爬取财经新闻股票_python 抓取新浪财经股票数据

    新浪并未提供API,但我们可以通过抓包来获取实时或历史行情数据. 实时行情 比如我们可以通过浏览器访问: ?== 来获取证券代码为的实时行情数据,可以看到内容为: ="华泰证券,,,,20. ...

  6. python 爬取财经新闻_金融财经新闻的文本爬取

    大家一定还记得<金融数据的获取--一个爬虫的简单例子>这篇文章中介绍的爬虫思想和方法吧.看过之后,大多数人都会有这样的感受,虽然爬虫的原理比较简单,但是正则表达式却很难写.对于每个页面内容 ...

  7. 爬取财经新闻+新闻评论(一网打尽)

    第一篇csdn! 应用性比较强的爬虫(投资者情绪+自然语言处理+动态传输/网页) 包括阅读量.评论量.文章来源.新闻标题.新闻正文.对于新闻的评论数.对于新闻的评论 研一新生,时间紧任务重,有需要的代 ...

  8. python爬取和平精英皮肤_20行Python代码爬取王者荣耀全英雄皮肤

    引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. 准备工 ...

  9. python实现新闻网站_如何用 100 行 Python 代码实现新闻爬虫?这样可算成功?

    每天我都要坐地铁上班,而地铁里信号差.但我希望在坐地铁的时候读些新闻,于是就写了下面这个新闻爬虫.我并没有打算做很漂亮的应用,所以只完成了原型,它可以满足我最基本的需求.其思路很简单: 找到新闻源;用 ...

最新文章

  1. MyBatis动态SQL之 set 和 trim标记的使用示例
  2. Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)
  3. ngrx中的memoized函数
  4. Javascript阻止表单提交
  5. CF1654F-Minimal String Xoration【倍增】
  6. vim替换字符串带斜杠_Linux vi/vim最全使用指南
  7. 60-008-020-使用-命令-flink命令
  8. 博文视点大讲堂35期《Google Android创赢路线与产品开发实战》读者见面会
  9. 面试美团,面试官突然问我 Java “锁” ,我哭了
  10. 聊天机器人5步重塑酒店业
  11. 安装win10+黑苹果双系统零基础教程
  12. java转换成kotlin语言教程_#7 Kotlin教程 | 把Java转换为Kotlin
  13. linux操作系统安装教程图解【图文教程】
  14. eNSP配置VLAN间路由
  15. java小项目-继承-接口-Swing窗口(一共5个demo)
  16. 软工作业 4:结对项目之词频统计——基本功能
  17. 创新创意ssm计算机毕业设计题目300例之java农村电商网站3252s
  18. [转载]实时 Java,第 5 部分: 编写和部署实时 Java 应用程序
  19. 微信CRM六大模块详解
  20. ANSYS Workbench中多场耦合下不同模块间的信息共享设置

热门文章

  1. 在arm32中浮点数与16进制转换
  2. 武汉大学IGS数据中心网站的下载方法
  3. android 平台的RNDIS功能
  4. windows vscode安装boost后undefined reference to `ontop_fcontext‘
  5. Python正则表达式(附正则表达式教程、调试工具、可视化工具)
  6. python实现前景理论
  7. catv系统主要有哪三部分组成_CATV系统组成包括( )_学小易找答案
  8. coreldraw 导入面料_CorelDRAW 导入和导出文件
  9. SYMBOL DS6708 - USB虚拟串口
  10. XP下安装openssl的过程