2018第一篇
不算教學的教學文...
本篇程式內容出自:TWSE_Python_crawler
原作者還有錄製教學影片在youtube
想看原版的人可以直接點上面的連結 XD
程式我只作一點小修改,其他都跟原版一樣
因為程式實在太簡單了,只放程式碼
import requests import json,csv import os,time,datetime from bs4 import BeautifulSoup as bs #取得當前工作路徑加存檔路徑 workpath=os.getcwd()+'\My_Stocks' #股票代碼 (2018/01/08 當日成交值前10檔股票) #請任意新增股票代碼 stock_list=[2330,3008,2317,6456,4943,2353,3406,6153,2891,3532] #現在 now=datetime.datetime.now() #要抓取的日期範圍 #2017這個數字代表開始抓取的年份 #程式會從2017年的1月開始抓取資料到現在,每個月份的csv檔 year_list=range(2017,now.year+1) month_list=range(1,13) #建立個股連結(含日期)&抓取資料 def get_data(year, month, stock_id): date=str(year)+'{0:0=2d}'.format(month)+'01' #格式yyyymmdd sid=str(stock_id) url_twse='http://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date='+str(date)+'&stockNo='+str(stock_id) res=requests.post(url_twse,) soup=bs(res.text,'lxml') data=json.loads(soup.text) #存檔路徑 mydir=os.path.join(workpath,str(stock_id),str(year)) filename='Stock_'+sid+'_'+str(year)+'_'+'{0:0=2d}'.format(month)+'.csv' if not os.path.isdir(mydir): os.makedirs(mydir) #檢查檔案是否存在 if not os.path.isfile(os.path.join(mydir,filename)): outputfile=open(os.path.join(mydir,filename),'w',newline='') outputwriter=csv.writer(outputfile) outputwriter.writerow(data['title']) outputwriter.writerow(data['fields']) for data in(data['data']): outputwriter.writerow(data) outputfile.close() else: print('已有相同檔名的檔案存在!!!') time_start=time.time() for stocks in stock_list: for year in year_list: for month in month_list: if (now.year == year and month > now.month) :break data=get_data(year,month,stocks) #print(year,month) #時間間隔請設3秒以上,以免被twse封鎖 time.sleep(3) time_end=time.time() print(time_end-time_start)
後續:
暫時沒有(2017/01/08)