Python爬蟲學習 learn from 大數學堂


依稀記得在七月初到台大上課,第一次聽到爬蟲,一直以為是某種高等生物.
但事實證明不是高等也不是生物,只是我等級太低,智商也是...
在PECU老師的帶領下,一步一步學習使用R來爬蟲.雖然有些迴圈我還是很頭痛.
不過真的對我未來的學習很有幫助,即使coding過程痛苦,但還是有些樂趣的.(扯遠了...

這篇文章是有關於如何在網路抓取資料的初心者學習紀錄
如果是您的等級較高,那就當作休閒來看看吧...

註:這篇文章爬蟲過程都從大數學堂學來,coding source 也是.
(這篇為簡略學習紀錄,大家有興趣,要仔細學習就請自行觀看大數學堂囉.)



由上圖可知,爬的資料是PTT的Money板.
把板上的標題-作者-日期都爬下來了.
對完全零基礎的人來說,可能覺得那複製貼上不是比較快,
但其實爬蟲可做到的是能快速地按照特定格式,擷取指定範圍的資料.
在新手還在整理複製貼上的原始資料時,高手就已經在泡茶囉.

資料爬下來後,
使用2016年開始到現在在Money板上出現的標題資料,直接使用R繪製WordCloud文字雲



註:以上wordcloud raw code 來自於 Nick Oliver


分析結果

將最後文字雲結果輸出,可以發現從年初到現在Money板都討論甚麼主題居多.
但因樣本不夠多,所以有些雲狀沒產生出來.

可發現金融市場動盪不安啊,
看空:金管會要查/出口連黑/浩鼎之後/假美金/比水便宜...
看多:人民幣美金/人民幣兌台幣/./////
有個很奇怪的標題字為三新竹場...我猜是三星(最近爆炸了...

Processing: How FUN!?

剛開學,發現了一個超棒的開放式課程(政大Moocs: 玩電玩.學語言)
吸引我的不只是課程的設計,更是使用來教學的程式語言Processing.

快速google這個processing語言,發現是一個專門用於多媒體設計互動的語言,
在畫圖上有很大的自由度,能畫出多樣特殊且充滿藝術的圖形.
且畫出的圖形,能賦予動畫和其他特殊屬性,使得圖形能在多媒介上產生高度互動性.




省略過基礎的畫圖Demo.
直接來看看Processing 在特殊的繪圖與影像處理上,有多強大.

註:以下範例 code source皆由Daniel Shiffman share on GitHub提供.

範例 1: PerlinNoiseTerrain

範例 2: Mirror



可觀察到上面兩範例,一為複雜的幾何圖形不斷延伸,另一為camera像素影格的調整.
兩者demo出來的成果,可以串聯許多媒體,也有更多衍生使用性,
BTW,當初processing這個程式語言就是由一群藝術家和工程師所開發出來的,
因此可想像它的用途會多用於各種展場或藝術秀.

看完了這麼神奇的東西, 大部分對多媒體應用有興趣的觀眾,都躍躍欲試了吧.
那就和我一樣,先修課於政大Moocs:玩電玩,學程式.
閒暇之餘,別忘了多逛逛Processing的官網.裏頭有許多寶藏可挖掘喔~

簡易修改樣板 (Favicon設計)

做一個網站除了有標題有內容,更要有一個具有識別度的品牌,
而此品牌的建立,是基於Favicon的設計基礎.
只要Favicon設計的好,便能帶給所有觀眾專業的形象.

而何謂Favicon,它是由Favorite Icon所集合的縮字,
使用Google搜尋頁面來做解說,
Favicon和一般廣泛認知的Logo有啥區別?



上方的特小標誌為Favicon,下方為Logo.(注意:兩者在法律層面上都為商標)

一般LOGO設計的發揮度較大,因為大小可能較為多變,
而Favicon的設計相較於Logo就較多限制了.原因看上圖應該非常清楚.


Favicon設計須知:

實際觀察Favicon設計,你會發現這類的設計跟"點描繪"的繪畫方式很像,
Favicon圖片框架為一正方形,且大小16*16到48*48,普遍不大.
因此在設計上,就要考量到圖片格式的問題,
盡量設計簡單但又能讓人輕易識別且聯想到網站形象是最好的.


設計Favicon流程:

  1. illustrator 繪製Logo
  2. Logo轉換為Favicon
  3. 上傳至自己的網站
正常來說,所有設計流程皆從最小的尺寸開始設計,
但我因為沒受過正規設計訓練,因此習慣要先從較清楚且尺寸較大的Logo開始設計,
才能再轉為尺寸較小的Favicon.

1. Illustrator:

為了凸顯個人特色,我取自己英文名字的縮寫 JC做為象徵符號,
參考許多字體刑式並畫出自己喜歡的字形,
最後套用前陣子流行的Low Poly design 風格,
並以冷暖色系的對比,強調網站的豐富性,
最後出來的成果就是我的網站標誌囉.


2. Logo Convert to Favicon:

接下來這一步就剩轉檔跟微調了,
其實這部分可以在Photoshop完成,但我的Ps有點怪怪的,就不想用了.
所以直接用favicon.ico Generator 這個網站轉檔.


可以觀察到上傳圖片後,它的像素大小,就能理解為何我會說favicon設計方式是"點描繪".
在這階段,你可以透過此平台自己在微調logo樣貌,他會直接show出來favicon的圖示,
讓你確認實際效果,確認完後,就可直接轉檔下載圖片並留存檔案.

設計完favicon就能套用到自己的網站或blogger.
在這輕鬆帶過如何套用到自己的blogger.
方法:blogger後台 - 版面配置 - 點選網站小圖示  就可上傳自己的favicon囉.



NBA射手數據分析

等開學前每天都寫blogger有關的文章有點膩,
於是今天來點不一樣的口味,NBA數據分析.
說實話,我對球類運動一直很不在行,很少關注這類運動.
(除了棒球跟亞洲列強打時,會跟風看球賽..)
總而言之,這篇文章的重點在分析上其實很簡單,讓我們輕鬆看過去吧.

 

資料格式

變數如下圖,很多變數跟資料,但只是簡單練習,沒有要全面分析,所以只用四變數做分析.
之後有其他想法會再做更多分析.

使用變數為:投球球員,節數,有無進球,得分數

(此資料來源為Kaggle資料科學平台,提供各式資料樣本)

Analysis Tool: R+Tableau

這兩樣工具一樣是我上研所才學的東西,經驗值約兩個月.
大家有興趣可以學一下,有時還蠻好用的.說不定學一下就超越我了.

Intro

  1. R
  2. Tableau

分析過程

此次分析的 R code

### 2014-2015 每節FG% ###
shot_logs %>% 
  filter(投球球員=='kyle korver') %>% 
  group_by(節數) %>% 
  summarise(sum(有無進球)/length(有無進球))

shot_logs %>% 
  filter(投球球員=='stephen curry') %>% 
  group_by(節數) %>% 
  summarise(sum(有無進球)/length(有無進球))

shot_logs %>% 
  filter(投球球員=='klay thompson') %>% 
  group_by(節數) %>% 
  summarise(sum(有無進球)/length(有無進球))

### 2014-2015得分數總計 ###
shot_logs %>% 
  filter(投球球員=='kyle korver') %>% 
  summarise(sum(得分數*有無進球))

shot_logs %>% 
  filter(投球球員=='stephen curry') %>% 
  summarise(sum(得分數*有無進球))

shot_logs %>% 
  filter(投球球員=='klay thompson') %>% 
  summarise(sum(得分數*有無進球))

以上為使用R著名的套件dplyr.
在處理大量資料上非常的方便強大.
一開始學R要切割資料時,都很花時間,因為我不會迴圈又沒邏輯...
後來得知這個套件,真的覺得超猛,省下很多資料整理時間.

(教學:請看這dplyr)

分析結果

Tableau(Data Viz)

可以看到以上三名射手,在2014-2015年的總得分.
按照排名的話就是Stephen Curry-Klay Thompson-Kyle Korver.
對不常看籃球的人來說感覺Curry超強的啦,根本神紀錄.
但實際上身為一個籃球迷或NBA賭徒,一定要懂各NBA統計的指標啊(雖然我都不是...
而其中有一項指標為FG%(Field Goal Percentage),看起來不是很懂沒關係.

簡單來說,FG%=投進球數/投球數,就是投籃命中率囉.
但單只計算FG%有點無聊,所以我按照各節數計算投籃命中率.
可以觀察到這三個球員,在每節球賽的投球表現,
非常有趣的是按照這個FG%重新來排名為Kyle Korver-Stephen Curry-Klay Thompson.

從總得分數和FG%,得知Kyle Korver較少上場,較少出手.
但每一出手就幾乎必中,他才是真正的神射手.

從三個球員的FG%走勢圖,可得知越好的射手到比賽快結束時,狀況不只要保持,而且到關鍵時刻要手感發燙,來一個大爆發逆轉秀,這樣才能符合球隊和觀眾的期待.

最後,
此篇射手分析,並不代表這三位球員相互比較的價值,僅針對2014-2015的射籃數據做分析,如果你是Curry迷,別生氣,因為一個球員能全方位的協助球隊獲勝才能真正決定他的價值.

淺談客製化Blogger的必要工具.

前文提要:
雖然文章要教導大家如何快速客製化Blogger,
但對初學者來說,某些學習還是必要的.(跟博愛座一樣...誤戰 汗)
總而言之,此篇文章就是教零基礎的人,了解兩樣簡單的網頁製作工具.
讓大家在撰寫自己Blogger時,能快速修改一些東西.



必要工具:

  1. 網頁開發工具
  2. 查找快捷鍵
如前文Blogger套用完自己喜歡的樣板後,
第一件事就是使用網頁開發工具去觀察所有網頁元素...
而如何開啟網頁開發工具,其實各瀏覽器幾乎都內建好了.

1. 網頁開發工具

步驟:開啟自己的Blogger首頁-滑鼠右鍵-檢查


按下檢查後,可以透過網頁開發工具輕易看到所有網頁架構和網頁設計...等,
透過此工具檢查網頁所有可能存在的問題.



這個工具好用的地方在於你可以輕鬆對應每個網頁區塊與網頁元素.
步驟如下: 點擊-選去網頁各區塊-檢查對應的網頁元素


如果此工具會使用,但對網頁架構無基本認識,大家可以先至各大學習平台認識一下HTML架構.
認識完後,你會發現網頁開發工具超神奇.


使用完網頁開發工具後,找到要改的地方.
接著來到Blogger-範本-編輯HTML

點擊編輯HTML 會看到一堆網頁原始碼


2. 查找快捷鍵

快捷鍵(hot key)我相信大家都不陌生.
但在編寫網頁時(原始碼),常會被一長串密密麻麻的code看得頭昏腦脹,等自己找到要修要改的地方時,眼睛都瞎了.
這時一定用的到的快捷鍵為查找快捷鍵.(Crtl+F),記得在使用前先點到原始碼內嵌頁面.



可以看到原始碼內嵌頁面右上方多了一個Search Bar.
在裡面搜尋你想修改或尋找的網頁元素,找到後就可依照自己的意思快速客製化自己的網頁囉.
這部分可能牽涉到很多語法問題,建議大家在修改前,先將Blogger的設定弄好.
弄完後再改網頁原始碼時,不要忘了把修改前的code貼到筆記本裡,以免動完刀發現錯誤導致整個網頁崩潰,那就真的悲劇囉.

Blogger快速客製化

如果你完全不知道WordPress是甚麼,也沒有網頁基礎.
那麼剛開始的Blogger可能僅按照Google大神的指示,套用基礎格式.
But 想要一個客製化極高的部落格,該怎麼做,自己又不會寫網頁...
有鑑於此,此篇文章探討如何快速架設極具個人特色的Blogger.
話說從前寫網頁要會HTML,CSS,架站知識...等,雜七雜八的東西
但現在網頁資源豐富,只要有一丁點的時間人人都能寫網站
而據我懶人王的經驗在此分享自己做網站的流程

Step by Step like a baby

  1. 先Google別人的分享文
  2. 把做網頁的流程圖畫出來
  3. 參考國外網頁的模板
  4. 選擇適合自己的網站
  5. 套用中意的模板
  6. 修改模板與客製化需要的網頁功能
  7. Try&Error發假文做假頁面,測試網頁功能正常與否
  8. 撰寫兩到三篇文章,開始營運網站囉

Step 1-2

由於本身是學商管的,因此很了解事前準備的重要性.
對一事物的不熟悉,可透過模仿學習來強化記憶.
先觀察三至五個別人的學習紀錄後,可試著整理自己的學習架構.
自己可以試著問,想要什麼網站?網站的用途?寫給誰看?...
如果很會畫圖,也可自己排版看看自己的網站Style,並繪製SiteMap

Step 3-5

不想套用Blogger制式的樣板,想擁有自己獨一無二的網站
但又不想從頭開始,浪費時間寫網頁...
那就只好再次請教Google大神,搜尋"免費的網頁樣板"
(這部分用英文搜尋效果較佳,國外的設計網站超猛的)
由於使用Blogger架站,因此介紹 gooyaabitemplates 平台
裡面有許多開放的樣板可直接運用blogger套用
(至於怎麼套用,官網這裡有介紹喔)

Step 6-8

在套用完適合且喜歡的模板後,你會看到如樣板所示的樣貌
但有些功能和頁面設計你並不想使用,該怎麼辦勒...
此部分較複雜,所以請詳見續篇囉.~

Continue reading...(wait a second)

簡易修改樣板 (Favicon設計)
簡易修改樣板 (頁面)
簡易修改樣板 (簡易SEO設置)

如何建置部落格或者個人網站?


現在對所有人來說擁有個人的網站已不再是難事
但在眾多架站平台與不同系統支援間要如何選擇
反倒變成一大難題(選擇變多 反而讓人頭痛)

約莫一個半月前 我開始萌生架設自己網站的意念
那時使用的平台為WordPress 此平台好處是互動性極高且為動態網頁
但壞處為對只想免費架站的朋友,可能會有諸多不便
原因為此平台多使用PHP寫成,大多免費主機空間都僅支援靜態網頁
如果不付多餘的空間管理費,你的網站可能會極為不穩定.

因為本人也是第一次寫網誌,設置自己的網站
所以決定一切從簡,用最簡單的方式,讓大家能看到我的分享就好

兩大最簡易撰寫網站之工具:
  1. Blogger
  2. git.hub
1. Blogger
為Google大神為大家建置的部落格平台,
其介面與WordPress有87%像
操作平台包含諸多功能,也有許多外掛可以使用.
對有網頁基礎的朋友來說,非常親切.
而其架站方式,真的再簡單不過了,
僅僅按照平台使用說明,就可擁有自己的部落格囉

2. git.hub
git.hub對科技業來說,是一個專案管理的好工具,
許多專案可以藉由此平台進行快速的管理,
而git.hub其中一項超棒的基礎功能.
讓大家都能擁有一個主機空間.(免費為靜態網頁,如要動態網頁可能要付錢錢)
與Blogger一樣,僅需照著官方提供之使用說明就可使用(但一樣自己要有基礎的網頁概念)


Continue reading...