用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文件,所有的股票和历史价格都已经乖乖躺在里面。

 

获取源码

如何获取源代码:

关注微信公众号“无知红”,后台回复  “ 股票每周价格 ” ,即可获取下载地址

转载于:https://www.cnblogs.com/johngogogo/p/11283808.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值