前段时间各种E-corn(比特币,以太币)的价格飞涨,买买提很多搞深度学习的朋友都把显卡拿来挖矿了。最近读到知乎上的一篇文章。讲的是比特币交易。不同的地区,不同的交易平台会出现不同的价格。所以就有了无风险套利的空间。在价格低的平台买进,在价格高的平台卖出。因为要实时监控价格,决定交易策略,所以不可能一直靠人工点击查看价格进行交易。必须依靠机器来自动抓取比特币的价格,自动进行买卖。
看完以后唏嘘不已,想起了n年前我还在加州读书的时候,在办公室里面搞了一台机器,日夜挖矿,乐此不疲。那个时候每天在办公室就是看看paper,上上买买提。慢慢学会了倒卖各种电脑相机打印机,wii的游戏机平衡板,到后来果果出来iphone ipad更是迎来了高潮。那是一个疯狂的时代,也是一个热火朝天的时代。每天忙乎乎的,然后到半岛搞了螃蟹龙虾九层塔鸭舌。
黄鹤一去不复返。
anyway,下面是一个最简单的例子,怎么通过网站的api接口来下载数据。当然要是没有api接口的话,那就只能自己crawl各种网页了。下一篇blog我会简单的介绍一下我怎么爬wsj的新闻标题的。
from bs4 import BeautifulSoup
import urllib
import urllib2
import json
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from datetime import datetime
sns.set_style("darkgrid")
打开网页,数据是json格式的。直接json load成dict,然后转为DataFrame以方便查看。但是如果保存到sql的话,不需要转为DataFrame。
#r = urllib.urlopen(r'file:///H:/python/test/wsj_bmo.html').read()
response = urllib2.urlopen('https://data.btcchina.com/data/trades')
data = json.load(response)
df = pd.DataFrame(data)
# response = urllib.urlopen(r'https://data.btcchina.com/data/trades').read()
date_num = df.date.map(lambda x: datetime.fromtimestamp(int(x)))
date_str = df.date.map(lambda x: datetime.fromtimestamp(int(x)).strftime('%Y-%m-%d %H:%M'))
idx = range(0, df.shape[0], 50)
plt.plot(idx, df.price[idx], color = "#33b5e5", label = "")
plt.xticks(idx, date_str[idx], rotation = 45)
plt.locator_params(tight=True, nbins=10)
plt.title("Bitcoin Price(CNY) in Last 24 Hours")
plt.legend()
plt.show()