作者a856479 (thebelief)
看板Python
标题[问题] 获取证交所即时股价
时间Tue May 9 12:21:02 2017
Hi 大家好,以下是我的问题
目前正在尝试从证交所取得即时股票资讯
但有时候可以成功,有时候会失败...
我找不出错误的原因,希望各位可以帮忙
=====以下是程式码=====
targets = ['6188', '5478', '6488'] #关注的股票代码
endpoint = '
http://mis.twse.com.tw/stock/api/getStockInfo.jsp'
timestamp = int(time.time() * 1000 + 1000)
channels = '|'.join('otc_{}.tw'.format(target_otc) for target_otc in targets)
query_url = '{}?&ex_ch={}&json=1&delay=0&_={}'.format(endpoint, channels,
timestamp)
headers = {'Accept-Language': 'zh-TW'}
req = requests.session()
req.get('
http://mis.twse.com.tw/stock/index.jsp', headers=headers)
response = req.get(query_url)
content = json.loads(response.text) # 注解1
data = content['msgArray'] # 需要的讯息被包在'msgArray'里面
print(data)
=====程式码结束=====
当我执行以上程式,有时候可以成功获取资讯
但是常常失败的结果是显示:
data_otc = content_otc['msgArray']
KeyError: 'msgArray'
於是我试着印出 #注解1 的content:
只剩下{'userDelay': 500, 'rtmessage': '0', 'rtcode': '0000'}
'msgArray'的确消失了.
我找不出是什麽原因会导致失败,希望各位可以帮我解惑...
谢谢各位耐心阅读我的问题!
*补充说明一下,如果有成功 印出来的data会像:
{'msgArray': (股票资讯), 'userDelay': 5000, 'rtmessage': 'OK', 'rtcode':
'0000'}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.139.148.49
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1494303664.A.BDA.html
※ 编辑: a856479 (101.139.148.49), 05/09/2017 12:51:34
1F:→ s860134: header 干嘛不抄完? 05/09 12:55
2F:→ a856479: header部份有尝试过加入更多资讯,但没有改善,所以最後 05/09 13:33
3F:→ a856479: 只留下那段 05/09 13:33
4F:→ a856479: 我疑惑的地方是,为什麽有时候会成功有时候失败 05/09 13:35
5F:→ zerof: server block 吧, rtmessage 不是回传 '0' 吗....y 05/09 14:50
6F:→ a856479: 我有另一个一样的脚本,因为上市跟上柜股票的词缀不一样 05/09 15:13
7F:→ a856479: 。但也只有将 channels = '|'.join('otc_{}. 的otc_改成t 05/09 15:13
8F:→ a856479: se_{}.,去取得上市股票资讯。每次都是同时执行,可是就 05/09 15:13
9F:→ a856479: 没出错过。还是脚本里面有哪里是我可以改善的部份吗? 05/09 15:13
10F:推 marsking: 使用你的程式码测试好几次都没失败过耶0.0 05/09 21:42
11F:推 chababa: 我试跑几次,真的有原Po描述的情形 05/09 22:50
12F:→ a856479: 呃 哈哈,有点囧。谢谢大家帮忙测试 05/09 22:53
13F:推 marsking: 我是用 python3.5 不知道有没有关系? 05/09 23:38
14F:推 Killercat: 最rock的方法就是开wireshark抓看request有没有不同 05/10 09:34
15F:→ Killercat: 如果request基本上都一样,那就是server问题了 05/10 09:34
16F:→ s860134: server site 应该是有做些防堵 05/10 13:06
17F:推 chababa: 谢谢大大的分享, 很有趣的Topic 05/10 20:00