tushare 中的ts.get_stock_basics() 函数总是超时 返回不到结果的原因

调用的方法:
import tushare as ts

ts.get_stock_basics()

不过经常会出现:
    self.base=ts.get_stock_basics()
File "C:\Python27\lib\site-packages\tushare\stock\fundamental.py", line 44, in get_stock_basics
text = urlopen(request, timeout=10).read()
File "C:\Python27\lib\socket.py", line 351, in read
data = self._sock.recv(rbufsize)
File "C:\Python27\lib\httplib.py", line 567, in read
s = self.fp.read(amt)
File "C:\Python27\lib\socket.py", line 380, in read
data = self._sock.recv(left)
socket.timeout: timed out
这样的问题。
 
这个是因为tushare的作者把get_stock_basics()的信息文件保存在他自己的服务器。
这一点可以翻看源码就知道。 地址为: http://218.244.146.57/static/all.csv 
估计作者用的一般的服务器,所以一旦数据请求多了,你的IP也被服务器当做是DDOS攻击,屏蔽掉你的请求了。
 
所以如果你平时需要频繁调用这个函数,不如把这个文件下载到本地,然后使用函数 df=pd.read_csv('all.csv')
来得到你想要数据,这样一来,程序不会因为经常超时而中断,而且本地读取文件的数据很快。 这样会节约不少的时间。
 
 
 在最新的tushare这个问题得到了解决。已经换一个数据源了。
 
PS:好多小问题都可以通过更新最新的tushare版本来得到解决。

升级命令:
pip install tushare --upgrade

 

0 个评论

要回复文章请先登录注册