返回列表 上一主題 發帖

[原創] python上市櫃三大法人買賣超日報資料下載

[原創] python上市櫃三大法人買賣超日報資料下載

可用來下載上市櫃三大法人買賣超日報資料。與py檔同一路徑下的path.ini可設定csv存放位置,注意路徑要包括最後一個"\",如:C:\user\desktop\test\。
附上執行檔
  1. import requests
  2. import time
  3. import os

  4. mydate = time.strftime("%Y/%m/%d")
  5. year = str(int(mydate[0:4])-1911)
  6. mydate2 = mydate.replace(mydate[0:4],year)

  7. setting = os.getcwd() + "\\" + "path.ini"

  8. if os.path.exists(setting):
  9.     with open(setting, 'r') as r:
  10.         path = r.read()
  11.     if not os.path.exists(path):
  12.         os.makedirs(path)
  13. else:
  14.     path = ""

  15. headers = {"User-Agent":"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"}


  16. url1 = "http://www.twse.com.tw/ch/trading/fund/T86/T86.php"
  17. payload1 = {"download": "csv",
  18.             "qdate": mydate2,
  19.             "select2": "ALLBUT0999",
  20.             "sorting": "by_issue"}

  21. res1 = requests.post(url1, headers=headers, data=payload1, stream=True)

  22. fName1 = path + mydate.replace("/","") + ".csv"

  23. with open(fName1, 'wb') as f1:
  24.     for chunk in res1.iter_content(1024):
  25.         f1.write(chunk)


  26. url3 = "http://www.tpex.org.tw/web/stock/3insti/daily_trade/\
  27. 3itrade_hedge_download.php?l=zh-tw&se=EW&t=D&d=" + mydate2 + "&s=0,asc,0"

  28. res3 = requests.get(url3, headers=headers, stream=True)

  29. fName3 = path + "BIGD_" + mydate2.replace("/","") + ".csv"

  30. with open(fName3, 'wb') as f3:
  31.     for chunk in res3.iter_content(1024):
  32.         f3.write(chunk)


  33. url2 = "http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/MI_INDEX.php"
  34. payload2 = {"download": "csv",
  35.             "qdate": mydate2,
  36.             "selectType": "ALLBUT0999"}

  37. res2 = requests.post(url2, headers=headers, data=payload2,stream=True)

  38. fName2= path + "A11" + mydate.replace("/","") + ".csv"

  39. with open(fName2, 'wb') as f2:
  40.     for chunk in res2.iter_content(1024):
  41.         f2.write(chunk)
  42.         

  43. url4 = "http://www.tpex.org.tw/web/stock/aftertrading/otc_quotes_no1430/\
  44. stk_wn1430_download.php?l=zh-tw&d=" + mydate2 + "&se=EW&s=0,asc,0"

  45. res4 = requests.post(url4, headers=headers, data=payload2,stream=True)

  46. fName4 = path + "SQUOTE_EW_" + mydate2.replace("/","") + ".csv"

  47. with open(fName4, 'wb') as f4:
  48.     for chunk in res4.iter_content(1024):
  49.         f4.write(chunk)
複製代碼

是從證交所抓嗎??  証交所最近這兩年拼命擋,小弟從 Excel VBA 轉到 python 東拼西湊好不容易改成功了,結果好沒幾天還是一直擋,
現在要轉向鉅亨網抓資料,不知道有大大知道怎麼解析鉅亨網的資料下載網址格式嗎??  新手解析真痛苦......

TOP

(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001BBBD77B6D8>: Failed to establish a new connection: [WinError 10061] 無法連線,因為目標電腦拒絕連線。',))
--->出現了這樣的Error~

TOP

在匯入網頁時,常常會遇到無法匯入的狀況,請問該如何解決呢?
是否有相關的文章可供參考?

EX:mini S&P 選擇權的各履約價交易數據(在CME網站)
我想要透過VBA下載卻一直失敗...

因為我無法發布網址(被系統擋掉),所以只能用貼上圖片

[attach]27980[/attach]

TOP

在匯入網頁時,常常會遇到無法匯入的狀況,請問該如何解決呢?
是否有相關的文章可供參考?

EX:mini S&P 選擇權的各履約價交易數據(在CME網站)
我想要透過VBA下載卻一直失敗...

因為我無法發布網址(被系統擋掉),所以只能用貼上圖片

[attach]27980[/attach]

TOP

import pandas as pd
import requests
import html5lib
from bs4 import BeautifulSoup
payload={
'encodeURIComponent':'1',
'step':'1',
'firstin':'1',
'off':'1',
'keyword4':'',
'code1':'',
'TYPEK2':'',
'checkbtn':'',
'queryName':'co_id',
'inpuType':'co_id',
'TYPEK':'all',
'isnew':'false',
'co_id':'1101',
'year':'105',
'month':'11'  
}
res= requests.post('hXXp://mops.twse.com.tw/mops/web/ajax_t05st10_ifrs',data=payload)
res.encoding='utf-8'
soup=BeautifulSoup(res, "lxml")
s=pd.read_html(soup)


請問我寫這樣pandas讀不到table
顯示no table  
該如何修改?

TOP

本帖最後由 c_c_lai 於 2016-10-15 07:52 編輯

回復 167# zyzzyva
目前我不信邪,又將 Anaconda3-4.2.0-Windows-x86_64.exe 安裝到 C 槽,
使用方式照 #166 所述執行,大部分的 *.ipynb 均能順利執行,
前陣子 (一週前) 是能正常作業;經你這麼一提示,察覺極有可能是 OS 的自動線上更新
有關。幾年前亦發生過此類似情況:即 Excel 與券商的 DDE 連線,有天在經過微軟作業系統
更新 Service Pack 後即宣告無法找到連上 DDE 的套件;經觀察那近日動態,僅有 Service Pack
被更新,於是手動將其當日更新的元件一一還原,在重新開機後隨即正常作業。
當時本論壇 (與其他論壇) 亦有數位先進亦曾發生,我將解決方式告知大家一平安無事。
目前是使用 Windows 10 (原本為 Window 7,經微軟免費線上自動升級至 Window 10)。

TOP

回復 166# c_c_lai
我有用另一台win7電腦灌 Anaconda3-4.2.0-Windows-x86_64.exe,執行起來都正常。
不過能順利解決真是太好了,這種環境設定的問題變數很多,有時候找不出確切的原因,真的有點煩人。

TOP

本帖最後由 c_c_lai 於 2016-10-14 11:39 編輯

回復 163# zyzzyva
得到一個結論:
無論安裝任何版本,透過 Anaconda Navigator 去執行 spider 或 jupyter notebook
等,如出現 "The kernel appears to have died.  It will restart automatically" 等狀況時,
解決之道是:

不要再透過 Anaconda Navigator 去執行, 直接至 \Anaconda3\Scripts 裡將
jupyter-notebook.exe 指向一個捷徑,然後每次均由此捷徑執行。
經測試過多個版本還蠻管用 (靈光) 的,如此便再無 "No Kernels" 的困擾了。
我個人判斷應該是 Navigator  去連結它本身的子選項時,在環境設定中出了問題。

TOP

回復 163# zyzzyva
1.) Anaconda3-4.2.0-Windows-x86_64.exe
2.) Anaconda3-4.1.1-Windows-x86_64.exe
只要安裝以上兩種 之任一項,在執行 jupyter notebook
後,隨意開啟 *.ipynb 的檔案時,均會出現 "No Kernels" 的結果。
你可試著 安裝以上任一之 *.exe 看看是否能順利執行?

TOP

        靜思自在 : 要用心,不要操心、煩心。
返回列表 上一主題