用pyhton爬蟲技術爬取全部股票的每週價格(附源碼)

前言

目前有愈來愈多的基金,不管是公募或私募,都在使用量化交易。將來10年,人工智能將出如今愈來愈多的投資交易中,不以人工智能爲核心的投資平臺將很難生存。量化交易的核心在於數據。今天咱們就利用python爬蟲技術爬取上交所全部股票的歷史每週價格,以備分析。html

 

找到數據來源

首先,打開東方財富網個股頁面。東方財富網的每週價格數據是經過js傳輸的,若是直接在網頁爬取,獲得的是空的數據。所以重點就是找到傳輸數據的那個js。在Network裏咱們很快找到了這個js。python

複製js的連接在新的窗口打開訪問,發現就是咱們要的數據。json

另外,js的連接也是有規律的,這就好辦了,接下來上代碼。api

 

代碼解析

導入須要的庫。微信

import requests from bs4 import BeautifulSoup as bs import json import csv

定義兩個宏變量。app

#宏變量存儲目標js的URL列表 STOCKPAGEURL = [] #宏變量存儲日期列表,事先爬取 dateList = ['1998-02-20', ...]

生成連接列表的函數。python爬蟲

def Get_Url(num): urlFront = 'http://pdfm.eastmoney.com/EM_UBG_PDTI_Fast/api/js?rtntype=5&token=4f1862fc3b5e77c150a2b985b12db0fd&cb=jQuery183011315552915535987_1527650090681&id=' urlRear = '1&type=wk&authorityType=&_=1527650434356' for i in range(0,num): STOCKPAGEURL.append(urlFront+str(600000+i)+urlRear)

獲取歷史每週價格,關鍵函數。函數

def GetInfo(num): for i in range(num): try: headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36', 'Referer': 'http://quote.eastmoney.com/sh603385.html', 'Accept': '*/*', 'Accept-Encoding':'gzip, deflate', 'Accept-Language': 'keep-alive', 'Connection': 'keep-alive' } pages = requests.get(STOCKPAGEURL[i],headers=headers) pages.encoding = 'utf-8' texts = pages.text.split('(')[1].split(')')[0] stockName = json.loads(texts) date = stockName['data'][0].split(',') #獲取股票的名稱、代碼和當前價格等基本信息,存儲在stockInfo變量中 stockInfo = [] stockInfo.append(stockName['name']) stockInfo.append(stockName['code']) stockInfo.append(stockName['info']['c']) #獲取股票每週的歷史價格,存儲在stockInfo變量中 for i in range(len(dateList)): dataListCount = 0 for j in range(len(stockName['data'])): temp = stockName['data'][j].split(',') if temp[0] == dateList[i]: stockInfo.append(temp[4]) break else: dataListCount +=1 if dataListCount==len(stockName['data']): stockInfo.append('0') #將變量stockInfo的數據存入csv CsvDownload(stockInfo) except: pass

將數據存入csv文件中。人工智能

def CsvDownload(stockInfo): print(stockInfo[1]) out = open('dataset.csv','a', newline='') csv_write = csv.writer(out,dialect='excel') csv_write.writerow(stockInfo)

主函數,運行上面的函數。url

if __name__ == "__main__": firstLine = ['name','code','pricetody'] + dateList CsvDownload(firstLine) num = 5000 Get_Url(num) GetInfo(num)

 

效果展現

下載過程,每條數據的爬取過程大概須要1秒,整個過程可能須要幾十分鐘,耐心等待便可。

 

爬取完成以後,打開csv文件,全部的股票和歷史價格都已經乖乖躺在裏面。

 

獲取源碼

如何獲取源代碼:

關注微信公衆號「無知紅」,後臺回覆  「 股票每週價格 」 ,便可獲取下載地址

相關文章
相關標籤/搜索