最近不是一直琢磨着炒美股嘛但是这个行情数据可把我愁坏。国内的这些软件,要么数据延迟,要么收费死贵,用起来总觉得差点意思。我就开始琢磨着,能不能直接从新浪财经那边扒拉点实时数据?
折腾的开始
我是两眼一抹黑,啥也不懂。先是百度一通搜,看看有没有现成的工具。结果,搜出来的东西五花八门,要么是过时的教程,要么就是各种广告,看得我头都大。
找对方向
后来我静下心来想想,觉得还是得自己动手,丰衣足食。既然新浪财经是国内比较大的财经网站,那数据肯定是有地方放的。于是我就打开新浪财经的美股页面,开始仔细观察。
观察与尝试
我先是看看网页的源代码,密密麻麻的一堆代码,看得我眼花缭乱。不过我还是发现一些规律。比如,每个股票的代码都是以“us”开头的,后面跟着一串字母,像“usAAPL”这样子。然后,我就尝试着在浏览器地址栏里输入这些代码,看看能不能直接访问到数据。
你猜怎么着?还真让我给蒙对!我输入几个股票代码,发现都能跳转到对应的股票详情页面。这下我心里就有底,知道数据肯定就在这些页面里。
数据的提取
就是怎么把这些数据给提取出来。我一开始想着用Python的requests库来抓取网页,然后用BeautifulSoup库来解析。结果,发现新浪财经的页面好像做反爬虫处理,我抓取下来的数据总是乱七八糟的。
我又试试Selenium,模拟浏览器操作,这下总算能抓到数据。但是,Selenium的速度实在是太慢,而且每次都要打开一个浏览器窗口,感觉有点笨重。
柳暗花明
就在我快要放弃的时候,我突然想起来,之前好像看到过有人说,新浪财经的数据接口是公开的。于是我就抱着试一试的心态,在新浪财经的页面里找找,还真让我给找到!
原来,新浪财经的数据接口是以HTTP的形式提供的,只需要在地址栏里输入特定的URL,就能获取到对应的数据。而且返回的数据还是JSON格式的,非常方便解析。
最终的实现
找到数据接口,剩下的事情就简单多。我用Python写一个简单的脚本,通过requests库来访问数据接口,然后用json库来解析返回的数据。把这些数据保存到本地,或者直接显示在终端里。
下面是我的代码核心部分(只是展示思路,不能直接运行):
import requests
import json

# 股票代码列表
stock_list = ['usAAPL', 'usMSFT', 'usGOOG']
# 循环获取每个股票的数据
for stock_code in stock_list:
# 构造数据接口的URL
url = '这里是新浪财经数据接口的地址,因为规定不能放链接,所以就省略' + stock_code

# 发送HTTP请求
response = *(url)
# 解析JSON数据
data = *(*)
# 打印股票名称和当前价格
print('股票名称:', data['name'])

print('当前价格:', data['price'])
看看,通过自己的双手,我终于搞定美股实时行情!虽然过程有点曲折,但结果还是挺让人满意的。以后再也不用担心数据延迟或者收费问题,想看啥股票,直接运行一下脚本就行,真香!

