股票爬蟲項目總結
阿新 • • 發佈:2018-05-06
python end taf 登入 pan IT OS 使用 折線
通過爬取雅虎財經上的股票數據,並繪制出股價的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
股票爬蟲項目總結