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

 

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