如何调用新浪股票接口?

微博很火啊,那python是不是可以调用微博的api做一个小应用呢?答案是:必须可以,哈哈使用python调用weibo api # 调用的url地址 此为获取某人的个人信息的ap......

如何调用新浪股票接口

接下来具体说说

获取新浪股票接口数据API的使用方法(2022年9月测试)

1、直接输入网址返回错误:Kinsoku jikou desu

在浏览器中输入网址以及股票代号:http://hq.sinajs.cn/list=sh601857,此时会返回:Kinsoku jikou desu!是拒绝访问的意思。

如何调用新浪股票接口?

因为在2022年新浪更改了访问接口,需要加入一个header,referer:https://finance.sina.com.cn/

2、要在输入网址的同时输入参数,需要安装浏览器插件。

以google chrome浏览器为例,下载modheader插件3.1.19。

点击浏览器右上角的三个小竖点,选择更多工具-->扩展工具

如何调用新浪股票接口?

或者在浏览器地址栏输入: chrome://extensions/,打开扩展工具页面。

勾上开发者选项:

如何调用新浪股票接口?

找到自己已经下载好的Chrome离线安装文件“.crx”,然后将其从资源管理器中拖动到Chrome的扩展管理界面中。

点击添加扩展程序。

如何调用新浪股票接口?

3、添加header参数。

此时,在网址栏后面会出现一个扩展程序按钮,点击后输入参数名称和值。

如何调用新浪股票接口?

再刷新网页,就会返回结果了。

4、代码调用

以上是在浏览器地址栏输入网址访问的方式,比较直观,但实际应用的时候是通过程序代码调用的。不同的编程语言都提供了访问网络的方式,基本上大同小异。都是提供了需要访问的网址和参数。

以python为例:

import requests

gudaima = "sz000001"

headers = {'referer': 'http://finance.sina.com.cn'}

resp = requests.get('http://hq.sinajs.cn/list=' + gudaima, headers=headers, timeout=6)

data = resp.text

print(data)

运行结果:

注意:如果提示不识别requests,需要下载:

使用python调用新浪微博接口

微博很火啊,那python是不是可以调用微博的api做一个小应用呢?答案是:必须可以,哈哈使用python调用weibo api

# 调用的url地址 此为获取某人的个人信息的api http://open.weibo.com/wiki/2/users/show

the_url = 'https://api.weibo.com/2/users/show.json?uid=105729xxxx&access_token=2.xxx__YJBzk8g4Ddfd33f10237XXXXX'

http_body = None

# 发送请求并读取返回 返回的内容是真个html源代码,或者json数据,可以通过文件输出或者包一层repr()来查看内容

req = urllib2.Request(the_url, data=http_body)

#当然也可以用此来发送请求,并读取返回的内容是真个html源代码,可以通过文件输出或者包一层repr()来查看内容

req = urllib2.Request("http://www.baidu.com", data=http_body)

resp = urllib2.urlopen(req)

print repr(resp.read())

import json

# 原配json工具

json.loads(resp.read(), object_hook=_obj_hook)

io = StringIO('["streaming API"]')

print io.getvalue()

# 输出为 ["streaming API"] io输出为一个StringIO对象 <cstringio.stringi object="" at="" 0x1006aed80="">

# 注 json工具 提供load和loads2个方法

json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

其中fp 按照官方的解释[http://docs.python.org/2/glossary.html#term-file-object]是面向文件的系统,或者那种提供.read(),.write()方法的对象,比如上面的StringIO

s 为普通的str或者unicode,相应json数据于python数据的对应如下

[http://docs.python.org/2/library/json.html?highlight=object_hook#json-to-py-table]

JSON Python

object dict

array list

string unicode

number (int) int, long

number (real) float

true True

false False

null None

# 转换json数据

如果json数据如此

{

"ip_limit": 1000,

"limit_time_unit": "HOURS",

"remaining_ip_hits": 1000,

"remaining_user_hits": 146,

"reset_time": "2013-04-19 15:00:00",

"reset_time_in_seconds": 3286,

"user_limit": 150

}

# 关于 object_hook 非必选函数 用于替换原本钓鱼json.loads返回的一个dict,

# json.loads返回的dict如果遇到一个不存在的量 比如"abc" 则会报错,

# 于是用object_hook 返回一个自己定义的dict 让他在遇到"abc"这个不存在的变量时不直接反错

# 而是try catch一下 返回None 更稳定

def _parse_json(s):

' parse str into JsonDict '

def _obj_hook(pairs):

' convert json object to python object '

o = JsonDict()

# print pairs['list_id']

print 'text' in pairs

if 'text' in pairs:

# it can output utf8

print pairs['text']

# ---

for k, v in pairs.iteritems():

o[str(k)] = v

return o

#loads is different from load

return json.loads(s, object_hook=_obj_hook)

class JsonDict(dict):

' general json object that allows attributes to be bound to and also behaves like a dict '

def __getattr__(self, attr):

try:

return self[attr]

except KeyError:

raise AttributeError(r"'JsonDict' object has no attribute '%s'" % attr)

def __setattr__(self, attr, value):

self[attr] = value

# 此 JsonDict 是dict(字典对象)的子类 它重写了 取索引的方法 __getattr__ 和 __setattr__

# 这里获取dict里的数据有个技巧 在获取JsonDict的对象时有2中方法

d1 = JsonDict();

d1['a'] = 'strra'

print d1['a']

print d1.get('a')

# 此 aaaa 并不在dict中

print d1.get('aaaa') # None

print d1['aaaa'] # key error~

# 使用get获取dict里的数据 遇到空的数据的话 可以避免error的产生 自动转成None</cstringio.stringi>

以上就是如何调用新浪股票接口?的详细内容,希望通过阅读小编的文章之后能够有所收获!

版权:本文由用户自行上传,观点仅代表作者本人,本站仅供存储服务。如有侵权,请联系管理员删除,了解详情>>

发布
问题