Enviar búsqueda
Cargar
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
•
26 recomendaciones
•
5,266 vistas
Paul Chao
Seguir
4/30/2017 廣宣學堂 爬蟲攻防戰 攻防與金融大數據分析班
Leer menos
Leer más
Economía y finanzas
Denunciar
Compartir
Denunciar
Compartir
1 de 57
Descargar ahora
Descargar para leer sin conexión
Recomendados
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
Manuel Menezes de Sequeira
El vino historia[1]
El vino historia[1]
ElitValle1
Conhecendo o Windows Server 2012
Conhecendo o Windows Server 2012
Eduardo Sena
Modelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídos
Portal_do_Estudante_SD
Integração de ferramentas de código aberto (java, pentaho e android) e mapas,...
Integração de ferramentas de código aberto (java, pentaho e android) e mapas,...
Caio Moreno
10 motivos para não celebrar a festa Natalina
10 motivos para não celebrar a festa Natalina
Marcio de Medeiros
Trabajo final google drive
Trabajo final google drive
JuanCarlosSimons2
Cloud Computing
Cloud Computing
Vaine Luiz Barreira, MBA
Recomendados
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
Manuel Menezes de Sequeira
El vino historia[1]
El vino historia[1]
ElitValle1
Conhecendo o Windows Server 2012
Conhecendo o Windows Server 2012
Eduardo Sena
Modelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídos
Portal_do_Estudante_SD
Integração de ferramentas de código aberto (java, pentaho e android) e mapas,...
Integração de ferramentas de código aberto (java, pentaho e android) e mapas,...
Caio Moreno
10 motivos para não celebrar a festa Natalina
10 motivos para não celebrar a festa Natalina
Marcio de Medeiros
Trabajo final google drive
Trabajo final google drive
JuanCarlosSimons2
Cloud Computing
Cloud Computing
Vaine Luiz Barreira, MBA
廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416
Paul Chao
Google雲端 第一章準備篇
Google雲端 第一章準備篇
gracebrainyu
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
Beckett Hsieh
Bitbucket pipeline CI
Bitbucket pipeline CI
Zero Huang
Using google appengine_final
Using google appengine_final
Wei Sun
如何幫樹莓派安裝常用的Python套件(How to Install Python Package on Raspberry Pi)
如何幫樹莓派安裝常用的Python套件(How to Install Python Package on Raspberry Pi)
Yanwei Liu
Using google appengine (2)
Using google appengine (2)
Wei Sun
学习 CodeIgniter
学习 CodeIgniter
BruceWolf
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1
modou li
Python 于 webgame 的应用
Python 于 webgame 的应用
勇浩 赖
Using google appengine_1027
Using google appengine_1027
Wei Sun
2012 php conf slide PIXNET 如何使用 php
2012 php conf slide PIXNET 如何使用 php
ronnywang_tw
20201024_aigo_lab2_fruit_classification_omnixri
20201024_aigo_lab2_fruit_classification_omnixri
OmniXRI Studio
Testing in Production, Deploy on Fridays
Testing in Production, Deploy on Fridays
Yi-Feng Tzeng
Spirent_securityLab-服務介紹_2022.pdf
Spirent_securityLab-服務介紹_2022.pdf
ssuserdfa916
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
Philip Zheng
Google雲端備份與虛擬伺服器建置工作坊
Google雲端備份與虛擬伺服器建置工作坊
Chung-Yi Huang
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
scott liao
JCConf 2015 TW 高效率資料爬蟲組合包
JCConf 2015 TW 高效率資料爬蟲組合包
書豪 李
Data Pipeline Matters
Data Pipeline Matters
Jazz Yao-Tsung Wang
AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)
Paul Chao
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
Paul Chao
Más contenido relacionado
Similar a 20170430 python爬蟲攻防戰-攻防與金融大數據分析班
廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416
Paul Chao
Google雲端 第一章準備篇
Google雲端 第一章準備篇
gracebrainyu
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
Beckett Hsieh
Bitbucket pipeline CI
Bitbucket pipeline CI
Zero Huang
Using google appengine_final
Using google appengine_final
Wei Sun
如何幫樹莓派安裝常用的Python套件(How to Install Python Package on Raspberry Pi)
如何幫樹莓派安裝常用的Python套件(How to Install Python Package on Raspberry Pi)
Yanwei Liu
Using google appengine (2)
Using google appengine (2)
Wei Sun
学习 CodeIgniter
学习 CodeIgniter
BruceWolf
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1
modou li
Python 于 webgame 的应用
Python 于 webgame 的应用
勇浩 赖
Using google appengine_1027
Using google appengine_1027
Wei Sun
2012 php conf slide PIXNET 如何使用 php
2012 php conf slide PIXNET 如何使用 php
ronnywang_tw
20201024_aigo_lab2_fruit_classification_omnixri
20201024_aigo_lab2_fruit_classification_omnixri
OmniXRI Studio
Testing in Production, Deploy on Fridays
Testing in Production, Deploy on Fridays
Yi-Feng Tzeng
Spirent_securityLab-服務介紹_2022.pdf
Spirent_securityLab-服務介紹_2022.pdf
ssuserdfa916
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
Philip Zheng
Google雲端備份與虛擬伺服器建置工作坊
Google雲端備份與虛擬伺服器建置工作坊
Chung-Yi Huang
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
scott liao
JCConf 2015 TW 高效率資料爬蟲組合包
JCConf 2015 TW 高效率資料爬蟲組合包
書豪 李
Data Pipeline Matters
Data Pipeline Matters
Jazz Yao-Tsung Wang
Similar a 20170430 python爬蟲攻防戰-攻防與金融大數據分析班
(20)
廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416
Google雲端 第一章準備篇
Google雲端 第一章準備篇
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
Bitbucket pipeline CI
Bitbucket pipeline CI
Using google appengine_final
Using google appengine_final
如何幫樹莓派安裝常用的Python套件(How to Install Python Package on Raspberry Pi)
如何幫樹莓派安裝常用的Python套件(How to Install Python Package on Raspberry Pi)
Using google appengine (2)
Using google appengine (2)
学习 CodeIgniter
学习 CodeIgniter
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1
Python 于 webgame 的应用
Python 于 webgame 的应用
Using google appengine_1027
Using google appengine_1027
2012 php conf slide PIXNET 如何使用 php
2012 php conf slide PIXNET 如何使用 php
20201024_aigo_lab2_fruit_classification_omnixri
20201024_aigo_lab2_fruit_classification_omnixri
Testing in Production, Deploy on Fridays
Testing in Production, Deploy on Fridays
Spirent_securityLab-服務介紹_2022.pdf
Spirent_securityLab-服務介紹_2022.pdf
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
Google雲端備份與虛擬伺服器建置工作坊
Google雲端備份與虛擬伺服器建置工作坊
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
JCConf 2015 TW 高效率資料爬蟲組合包
JCConf 2015 TW 高效率資料爬蟲組合包
Data Pipeline Matters
Data Pipeline Matters
Más de Paul Chao
AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)
Paul Chao
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
Paul Chao
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
Paul Chao
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
Paul Chao
廣宣學堂: 機器視覺初探 10152017
廣宣學堂: 機器視覺初探 10152017
Paul Chao
Python網站框架絕技: Django 完全攻略班
Python網站框架絕技: Django 完全攻略班
Paul Chao
開放運算&GPU技術研究班
開放運算&GPU技術研究班
Paul Chao
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班
Paul Chao
廣宣學堂: R programming for_quantitative_finance_0623
廣宣學堂: R programming for_quantitative_finance_0623
Paul Chao
Docker workshop 0507 Taichung
Docker workshop 0507 Taichung
Paul Chao
Introduction to Golang final
Introduction to Golang final
Paul Chao
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
Paul Chao
Más de Paul Chao
(12)
AI與大數據數據處理 Spark實戰(20171216)
AI與大數據數據處理 Spark實戰(20171216)
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 機器視覺初探 10152017
廣宣學堂: 機器視覺初探 10152017
Python網站框架絕技: Django 完全攻略班
Python網站框架絕技: Django 完全攻略班
開放運算&GPU技術研究班
開放運算&GPU技術研究班
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: R programming for_quantitative_finance_0623
廣宣學堂: R programming for_quantitative_finance_0623
Docker workshop 0507 Taichung
Docker workshop 0507 Taichung
Introduction to Golang final
Introduction to Golang final
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
1.
Python爬蟲攻防戰 - 攻防與金融大數據分析班 David Chiu 2017/04/30
2.
關於我 大數軟體有限公司創辦人 前趨勢科技工程師
ywchiu.com 大數學堂 http://www.largitdata.com/ 粉絲頁 https://www.facebook.com/largitdata R for Data Science Cookbook https://www.packtpub.com/big-data-and- business-intelligence/r-data-science-cookbook Machine Learning With R Cookbook https://www.packtpub.com/big-data-and- business-intelligence/machine-learning-r- cookbook 2
3.
Machine Learning With
R Cookbook (机器学习与R语言实战) & R for Data Science Cookbook Author: David (YU-WEI CHIU) Chiu 3
4.
所有課程補充資料、投影片皆位於 https://github.com/ywchiu/pyfinance 課程資料 4
5.
抓取上市股市EPS 資料 5
6.
請求 Request 回應 Response 網頁網頁連結器 Web
Connector 資料剖析 Data Parser 資料中心 Data Center 爬蟲是怎麼運作的 6
7.
如何抓取上市股市EPS 資料 7 http://mops.twse.com.tw/mops/web/t163sb19
8.
進入公開資訊觀測站 8
9.
觀察連結位置 9 1. 點選Network 2. 點選XHR 2.
點選連結
10.
import requests payload =
{ 'encodeURIComponent':'1', 'step':'1', 'firstin':'1', 'TYPEK':'sii', 'code':'', 'year':'104', 'season':'03' } res = requests.post('http://mops.twse.com.tw/mops/web/ajax_t163sb19', data=payload) res.encoding= 'utf-8' soup = bs(res.text) 讀取EPS資料 10
11.
dfs = pd.read_html(soup.prettify('utf-8'),
encoding= 'utf-8', header=0) dfall = [] for df in dfs: dfall.append(df[df['公司代號'].str.match('^[0-9]+')]) 只抓取公司代號有數字的 11 刪除掉不必要的列
12.
stockdf = pd.concat(dfall,
ignore_index=True) 列出所有公司第三季的EPS 12
13.
stockdf[stockdf['營業收入']==stockdf['營業收入'].max()] 猜猜誰是獲利王 13
14.
stockdf.sort_values( by= ‘營業收入’, ascending=False).head() 根據營業收入排序 14 由大到小做排序
15.
df1 = stockdf.groupby(['產業別'],
sort=False)['營業 收入'].max() print df1 根據產業別統計 15
16.
%pylab inline df1.plot.pie() 使用matplotlib 繪圖 16 讓圖片在下方出現
17.
切換到matplotlib 設定目錄下 C:Anaconda2Libsite-packagesmatplotlibmpl-data
修改matplotlibrc (將註解#拿掉) font.family : sans-serif font.sans-serif : Microsoft YaHei, … 如何讓matplotlib 出現中文? 17 增加微軟雅黑字體
18.
zhfont = mpl.font_manager.FontProperties( fname='C:UsersUsertwmtmTW.ttf') plt.title('中文',
fontproperties=zhfont) 指定中文字型 18 Windows10 要改成ttc
19.
def getEPS(year, season): dfall
= [] payload = { 'encodeURIComponent':'1', 'step':'1', 'firstin':'1', 'TYPEK':'sii', 'code':'', 'year':year, 'season':season } res = requests.post('http://mops.twse.com.tw/mops/web/ajax_t163sb19', data=payload) res.encoding= 'utf-8' soup = bs(res.text) dfs = pd.read_html(soup.prettify('utf-8'), encoding= 'utf-8', header=0) for df in dfs: dfall.append(df[df['公司代號'].str.match('^[0-9]+')]) return dfall 定義函式 19
20.
dftotal = [] seasons
= ['01','02','03','04'] for year in range(102,105): for season in seasons: dftotal.extend(getEPS(year, season)) 批次執行102年到105 年的資料 20
21.
stockdf = pd.concat(dftotal,
ignore_index=True) len(stockdf) 合併所有的Data Frame 21
22.
stockdf[stockdf['公司代號'] ==
'2330'] 篩選出台積電股票 22
23.
df2330 = stockdf[stockdf['公司代號']
== '2330'] df2330.plot(kind='line', rot=0) 繪製折線圖 23
24.
圖表資料抓取 24
25.
抓取財報狗的資訊 25 https://statementdog.com/analysis/tpe#2330
26.
找出呼叫資料的進入點 26 1. 點選Network 2. 點選XHR 3.
點選連結
27.
import requests headers =
{ 'X-Requested-With':'XMLHttpRequest', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36', } rs = requests.session() res = rs.get('https://statementdog.com/analysis/analysis_ajax/2330/2011/1/20 16/4/1', headers = headers) json = res.text 抓取圖表資料 27
28.
jdf = pd.read_json(json) jdf 使用Pandas讀取JSON 28
29.
使用Selenium 模擬使用者動作 29
30.
使用Selenium Plugin 30 https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/
31.
使用Selenium Plugin 錄製動作 31
32.
匯出Selenium 腳本 32
33.
https://github.com/mozilla/geckodriver/releases 下載GeckoDriver 33 將geckodriver 放到使用者目錄下
34.
https://sites.google.com/a/chromium.org/chromedriver/ 下載ChromeDriver 34 將chromedriver 放到使用者目錄下
35.
# -*- coding:
utf-8 -*- from selenium import webdriver from bs4 import BeautifulSoup import unittest, time, re driver = webdriver.Firefox() driver.implicitly_wait(30) driver.get("http://justdata.yuanta.com.tw/z/zk/zk00-f.asp") soup = BeautifulSoup(driver.page_source) print soup driver.close() 執行Selenium 腳本 35 需要執行pip install selenium 可以切換成ChromeDriver
36.
買賣日報表資料抓取 36
37.
破解買賣日報表查詢系統 37 http://bsr.twse.com.tw/bshtm/
38.
headers = { 'User-Agent':'Mozilla/5.0
(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36' } rs = requests.session() r2 = rs.get('http://bsr.twse.com.tw/bshtm/bsMenu.aspx', headers = headers) 抓取bsMenu.aspx 38 使用GET 抓取bsMenu.aspx
39.
payload = { '__EVENTTARGET':'', '__EVENTARGUMENT':'', '__LASTFOCUS':'', 'RadioButton_Normal':'RadioButton_Normal', 'TextBox_Stkno':'2330', 'CaptchaControl1':'E3QL8' 'btnOK':'查詢' } for
inp in soup.select('input[type==hidden]'): payload[inp['id']] = inp['value'] r3 = rs.post('http://bsr.twse.com.tw/bshtm/bsMenu.aspx', data=payload, headers = headers) 需要POST 資訊 39 必須從上一頁的Hidden Value 擷取 如何破解Captcha
40.
OCR 辨認裡面數字 pytesser https://code.google.com/p/pytesser/
ocropus https://code.google.com/p/ocropus/ Google Vision API https://cloud.google.com/vision/ 40 大數學堂 http://largitdata.com/course/37 http://largitdata.com/course/38
41.
r4 = rs.get('http://bsr.twse.com.tw/bshtm/bsContent.aspx?v=t', headers =
headers) print r4.text 使用GET 取得分點進出資訊 41
42.
http://www.dama2.com/ 打碼兔 42
43.
從Google Trend 分析金融交易行為 43
44.
Google Trend
包含使用的搜尋行為,是否可以利 用使用者的搜尋行為判斷股票漲跌? Google Trend 44
45.
http://www.nature.com/articles/srep01684 使用Pandas 實作論文 45 Preis,
T., Moat, H. S., & Stanley, H. E. (2013). Quantifying trading behavior in financial markets using Google Trends. Scientific reports, 3.
46.
Python for
Data Analysis 源自於R Table-Like 格式 提供高效能、簡易使用的資料格式(Data Frame)讓使用 者可以快速操作及分析資料 Pandas 46 可參照 pandas_in_finance.ipynb
47.
讀取 GoogleTrendsData import
pandas as pd data = pd.read_csv('data/GoogleTrendsData.csv', index_col='Date', parse_dates=True) data.head() 讀取Google Trend 資料 47
48.
%pylab inline data.plot(subplots=True) 繪製GoogleTrend 與股價的關係 48
49.
data['debt_mavg'] = pd.rolling_mean(data.debt,
3) data.head() 算出Search Word 三週的移動平均 49 debt 的三週移動平均
50.
data['debt_mavg'] = data.debt_mavg.shift(1) data.head(10) 將三週平均資料平移一天 50
51.
data['order'] = 0 #
黃金交叉做多 data['order'][data.debt > data.debt_mavg] = -1 # 死亡交叉做空 data['order'][data.debt < data.debt_mavg] = 1 data.head(10) 設定買賣策略 51 採取隔週買賣動作 e.g. 如果dept > dept_mavg 當週第一天買進道瓊,次 週第一天交易日末賣出
52.
data['ret_djia'] = data.djia.pct_change() data.head() 計算道瓊報酬 52
53.
報酬t是根據t-1週計算的,但買賣策略是發生在t 週,但在t+1周賣出,因此必須要將報酬平移一日 data['ret_djia'] =
data['ret_djia'].shift(-1) 根據買賣日調整 53
54.
data['ret_google'] = data.order
* data.ret_djia data.head(10) 計算根據Search Term 買賣的報酬 54
55.
(1 + data.ret_google).cumprod().plot(); (1
+ data.ret_djia).cumprod().plot(); 觀察資金變化 55 it=(it−1+it−1⋅rt)=(1+rt)⋅it−1,i0=1 利用Search Term 做決策比 隨機買賣報酬要好很多
56.
試著用 Google
Trend 對「流感」的搜尋擬定對康 那香(9919)的投資策略? 範例: 流感 v.s.康那香(9919) 56 可參照 googletrend_flu.ipynb
57.
57
Descargar ahora