Python股票数据爬虫

最近再看python的爬虫, 刚好有人问到能不能把所有的股票数据爬下来. 看一些其他人的实现方式,可能一些网站进行了优化,竟然没有找到能完全直接用的, 但得到了很好的思路. 简单记录一下,方便以后自己使用.

准备工作.

安装anaconda. 使用jupyter.

安装BeautifulSoup, requests 包

实现步骤:

1. 得到股票列表

def is_stock(href_para):
    if href_para is not None:
        href_list = href_para.split('/')
        last = href_list[-1]
#         print(last)

#判断是上海或者深圳的股票,因为里面还有一些其它,比如基金.
        ret= re.match("^[s][hz][0,3,6]\d{5}\.html$", last) 
#         print(ret)
        return ret


f =open('stock.csv','w+',encoding='utf-8',newline="")
writer = csv.writer(f)
# writer.writerow(('代码', '名称', '链接'))

stock_data = soup.find_all("a", href=is_stock)
# print(stock_data)

#储存到一个list,当然也把它存储到一个文件,方便以后使用

stock_list = []
for stock_it in stock_data:
    print(stock_it)
    num = re.findall("\d{6}",stock_it.contents[0])
    if num is not None and len(num)>0 :
        print(num)
        stock_list.append(num[0])
#     writer.writerow((num[0], stock_it.contents[0],stock_it['href']))
        writer.writerow((num[0]))


f.close()
print("finished")  

2.下载历史数据

import urllib.request

for code in stock_list:
    #判断是上海还是深圳,这里code是7位. sh 0 + code sz 1+code
    if code[0] == '6':
        url = 'http://quotes.money.163.com/service/chddata.html?code=0' + code + \
              '&end=20191004&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
    else:
        url = 'http://quotes.money.163.com/service/chddata.html?code=1' + code + \
              '&end=20191004&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'
    urllib.request.urlretrieve(url, 'D:\\doc\\stock_data\\' + code + '.csv') 

 

出来的效果, 每个股票是一个文件,打开是这样的

完整代码:

https://download.csdn.net/download/nujiah001/11833241

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章