通过爬取雅虎财经上的股票数据,并绘制出股价的K-折线图,实现了买入\卖出股票时机的分析。在这个过程中发现了几个以前新问题,记录如下:

1、python中日期与时间处理模块(date和datatime)

time模块主要用于时间访问和转换,这个模块提供了各种与时间相关的函数。time的时间戳格式,字符串格式之间的转换如下图所示:需要通过struct_time做中转站,不能直接一步到位。

 2、爬取数据的保存

(1)、通过request.get(url)得到的数据是requests.models.Response类型,我们要查看的话必须把它转化为.text格式才能查看,把该数据保存到.csv中操作如下:

r=requests.get(url)
f = open(name+'.csv', 'w')#创建存放股票数据的csv文件
f.write(r.text)#将获得的股票数据以文本数据的形式写入csv文件中
f.close()
#将.csv文件读取成dataFrame格式,并修改索引
data = pd.read_csv(name+'.csv', index_col=0,parse_dates=True, sep=",", dayfirst=True)
#修改索引和列的名称,以适应本文的分析
data.index.rename('date', inplace=True)
data.rename(columns={'Open':'open', 'High':'high', 'Low':'low', 'Close':'close','Volume':'volume'}, inplace=True)

 

(2)、如果返回的数据是dataFrame类型,则可以直接使用dataFrame.to_csv('xx.csv')存储为,csv文件。或者使用dataFrame.to_sql('xxx.sql')保存到sql数据库中:

s = pdr.get_data_yahoo(name, begin, end)#得到的数据直接为dataFrame格式
s.to_csv(name+'.csv')
data = pd.read_csv(name+'.csv', index_col=0,parse_dates=True, sep=",", dayfirst=True)
#修改索引和列的名称,以适应本文的分析
data.index.rename('date', inplace=True)
data.rename(columns={'Open':'open', 'High':'high', 'Low':'low', 'Close':'close','Volume':'volume'}, inplace=True)

(3)爬虫如何对抗网站的反爬虫机制:通过user-agent模拟用户登入网站。

def get_one_page(url):
    req=urllib.request.Request(url)
    #模拟浏览器post请求信息
    req.add_header('User-Agent','Mozilla/5.0(Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36')
    try:
        response=urllib.request.urlopen(req)
        response=response.read().decode('utf-8')
        return response
    except RequestException:
        return None

 

posted on 2018-05-06 11:15  心雨·心愿  阅读(367)  评论(0编辑  收藏  举报