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)
arrow
arrow
    全站熱搜

    正義的胖虎 發表在 痞客邦 留言(0) 人氣()