返回列表 上一主題 發帖

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

回復 80# zyzzyva

TOP

回復 82# zyzzyva
下載後必須先行檢視『筆記本』之下載內容,如為亂碼則刪除再重新
執行一次,如此反複,如為正體則將它先行儲存一次,然後才去做
開啟 Excel 動作。 反之『筆記本』之下載內容如不先行儲存一次,
開啟之  Excel (CSV) 檔內容依然為亂碼。(............xDx)

TOP

回復 55# lpk187
你對 #61 的案例有否看法? 如果改成使用 pandas 套件不知可行否?
我發現 Python 範圍還蠻廣的,你們的程式應用還真促成我對它的興趣,
謝謝你!

TOP

回復 85# clianghot546
Python(x,y) is a free scientific and engineering development software for numerical computations, data analysis and data visualization based on Python programming language. 它對股市數據的分析圖表非常好用;
而目前的案例是非數值之資料錄數據,謝謝妳!
也歡迎你一同討論!

TOP

回復 86# lpk187
你也是我的 Python 啟蒙老師呦!
一起加油吧!

TOP

本帖最後由 c_c_lai 於 2016-9-12 10:17 編輯

回復 89# zyzzyva
加上         f.write('\ufeff') 後,
一切即恢復平靜 (正常的不得了),這招還真管用呢!
謝謝囉!(執行前即先將 CSV 檔案移除,而後即從兩方面進行觀察,均不予以儲存條件下)
再來一個實用範例,那我的 Python 學習應將開始起步了!
  1. with open('gospel2.csv', 'a', new='', encoding='utf-8') as f:
  2.         fieldnames = ['建檔 ID', '中文名稱', '英文名稱', '分類', '宗派', '母會', '網址', '國別區域', '設立時間', '負責人', '電話', '傳真', '電郵', '會址', '通訊處']
  3.         f.write('\ufeff')
  4.         w = csv.DictWriter(f, fieldnames)
  5.         w.writeheader()
  6.         w.writerows(myList)
  7.         print('gospel2.csv 檔案儲存完畢!')
複製代碼

TOP

回復 91# zyzzyva
現在談功力還差太遠了(初淺),還無法駕馭尚請指導,
努力學習中,我幾乎將近有半年多未曾接觸 Python,
應用方面還尚未完全上手,正好碰上你們才使我重拾信心。
(前半個月才動完眼睛手術) 真有麻煩你指教了!

TOP

本帖最後由 c_c_lai 於 2016-9-12 16:22 編輯

回復 94# zyzzyva
Python 詮釋的實在太美了,簡潔扼要。
請問 r'/\s\d{1,3} 代表之涵義為何?
BeautifulSoup 一定是搭配 'lxml' 使用?
soup.select('.tb_pages td')[0] 其中的 [0]  指的是?
它能直接應用 regular expression 把它取出來實在是太厲害了。
#94 它怎麼知道要抓的是總頁數?

TOP

回復 98# zyzzyva
非常感謝你的詳細說明。
手頭上有一現成的 Excel 範例,我將其日期訂為 105年09月08日,
應用 IE 物件去抓取該日的 "信用交易統計"。我非常希望能藉由此範例
使用 Python 來達成,一方面增長智慧、另一方面得以增進 Python 的學習,
及進一步之了解與應用。先行謝謝你囉!
  1. Sub 信用交易統計()
  2.     Dim i As Integer, j As Integer
  3.     Dim ie As Object, E As Object, Sh As Worksheet
  4.         
  5.     Set ie = CreateObject("InternetExplorer.Application")
  6.    
  7.     With ie
  8.         .Visible = True
  9.         .navigate "http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/MI_MARGN.php"
  10.         
  11.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  12.         
  13.         .document.getElementById("date-field").Value = Format("2016/9/8", "EE/MM/DD")    '  填入
  14.                  
  15.         .document.all("selectType").SelectedIndex = 1      '   1 全部; 7 水泥工業; 8 食品工業
  16.         .document.all("query-button").Click
  17.         
  18.         Do While .Busy Or .readyState <> 4: DoEvents: Loop
  19.         
  20.         '  Set Sh = ActiveSheet
  21.         Set Sh = Sheets("信用交易統計")                     '  工作表單名稱
  22.         Sh.UsedRange.Clear
  23.         '  Sh.[A:A].NumberFormatLocal = "G/通用格式"        '  解決 "0050"  ->  "50" (不理想)
  24.         '  Sh.[A:A].NumberFormatLocal = "@"                 '  解決 "0050"  ->  "50" (左上角會有三角形)
  25.         
  26.         i = 0
  27.         With .document
  28.             For Each E In .all.tags("table")(3).Rows
  29.                 i = i + 1 '
  30.                 For j = 0 To E.Cells.Length - 1
  31.                     If j = 0 And Left(E.Cells(j).innerText, 1) = "0" Then    '  改以 .Formula 的方式處理
  32.                         Sh.Cells(i, j + 1).Formula = "=""" & E.Cells(j).innerText & """"
  33.                     Else
  34.                         Sh.Cells(i, j + 1) = E.Cells(j).innerText
  35.                     End If
  36.                 Next
  37.             Next
  38.             
  39.             i = i + 1         '  間隔出一空白行,易於上下區隔辨識
  40.             For Each E In .all.tags("table")(4).Rows
  41.                 i = i + 1 '
  42.                 For j = 0 To E.Cells.Length - 1
  43.                     If j = 0 And Left(E.Cells(j).innerText, 1) = "0" Then
  44.                         Sh.Cells(i, j + 1).Formula = "=""" & E.Cells(j).innerText & """"
  45.                     Else
  46.                         Sh.Cells(i, j + 1) = E.Cells(j).innerText
  47.                     End If
  48.                 Next
  49.             Next
  50.         End With
  51.         
  52.         .Quit
  53.         With Sh
  54.             .[A:A].HorizontalAlignment = xlLeft           '  A 欄值全數靠左
  55.             .Select
  56.         End With
  57.     End With
  58. End Sub
複製代碼
信用交易統計.rar (51.88 KB)

TOP

回復 100# zyzzyva
難怪大家會來使用 Python,光是看其執行能力就足矣。
原來是那麼地簡潔、扼要,又學到了,謝謝你的不吝指導!

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題