用pyhton爬蟲技術爬取所有股票的每周價格(附源碼)


前言

目前有越來越多的基金,無論是公募或私募,都在使用量化交易。未來10年,人工智能將出現在越來越多的投資交易中,不以人工智能為核心的投資平台將很難生存。量化交易的核心在於數據。今天我們就利用python爬蟲技術爬取上交所所有股票的歷史每周價格,以備分析。

 

找到數據來源

首先,打開東方財富網個股頁面。東方財富網的每周價格數據是通過js傳輸的,如果直接在網頁爬取,得到的是空的數據。因此重點就是找到傳輸數據的那個js。在Network里我們很快找到了這個js。

復制js的鏈接在新的窗口打開訪問,發現就是我們要的數據。

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

 

代碼解析

導入需要的庫。

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

定義兩個宏變量。

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

生成鏈接列表的函數。

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)

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

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

 

效果展示

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

 

爬取完成之后,打開csv文件,所有的股票和歷史價格都已經乖乖躺在里面。

 

獲取源碼

如何獲取源代碼:

關注微信公眾號“無知紅”,后台回復  “ 股票每周價格 ” ,即可獲取下載地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM