SlideShare a Scribd company logo
高效率資料爬蟲組合包
李書豪 <Abola Lee>
爬蟲包GitHub
高效率資料爬蟲組合包
高效率指的是?
資料爬蟲生命週期
爬蟲組合包
重要的定時爬蟲
爬蟲包實戰
爬蟲包GitHub
高效率指的是?
高效率指的是?(開發團隊)
● 相對少 - 開發時間
● 相對低 - 技術門檻
- 維護成本
● 相對多 - 適用情境
品質
能做更多的事
Scope
老闆關心的是有沒有.....
●SOP 標準作業流程
資料爬蟲生命週期
成份說明
爬蟲生命週期-完整
資
料
源
傳
輸
協
定
格
式
解
析
前
置
處
理
儲
存
爬蟲生命週期-本篇
資
料
源
傳
輸
協
定
格
式
解
析
前
置
處
理
儲
存
1 2 2.0
爬蟲生命週期
website
Don’t try this at home
Don’t try this at home
<HTML>
{ JSON }
資料源 傳輸協定 格式解析 前置處理 儲存
Map.get
XPath
爬蟲組合包
成份說明
爬蟲生命週期
website
<HTML>
{ JSON }
資料源 傳輸協定 格式解析 前置處理 儲存
Map.get
XPath
website
<HTML>
{ JSON }
資料源 傳輸協定 格式解析 前置處理 儲存
1. 整合傳輸協定
Map.get
XPath
1. 整合傳輸協定
Apache Common VFS 整合網路上常見的傳輸協定
http https sftp ftp ftps
smb HDFS RAM mine File
zip tar gzip jar ...
https://commons.apache.org/proper/commons-vfs/
protocol://[user[:pass]@]url[:port][/path]
心法
https://www.google.com
example
Apache Common VFS 整合網路上常見的傳輸協定
https://commons.apache.org/proper/commons-vfs/
1. 整合傳輸協定
範例 Ch3Coz1
protocol://[user[:pass]@]url[:port][/path]
心法
sftp://user:pass@192.168.0.1:22/etc/passwd
example
smb://user:pass@192.168.0.1/c/windows
Apache Common VFS 整合網路上常見的傳輸協定
https://commons.apache.org/proper/commons-vfs/
1. 整合傳輸協定
範例 Ch3Coz1
2. 轉化解析格式
website
<HTML>
{ JSON }
jsoup
資料源 傳輸協定 格式解析 前置處理 儲存
Map.get
XPath
2.0 通用擷取模式
website
<HTML>
{ JSON }
jsoup
資料源 傳輸協定 格式解析 前置處理 儲存
Map.get
XPath
2.0 通用擷取模式
為何選擇CSS selector?
品質
● 相對低 - 技術門檻
- 維護成本
2.0 通用擷取模式
jsoup CSS selector
範例 Ch3Coz2
http://jsoup.org/apidocs/org/jsoup/select/Selector.html
:contains(text)
:matches(regex)
:containsOwn(text)
:matchesOwn(regex)
除了支援 CSS Selector 3.0 外....
destination:containsOwn(南勢角站)
<results>
<_id>1</_id>
<Station>三重站</Station>
<Destination>南勢角站</Destination>
</results>
爬蟲包 SOP (標準作業流程)
1. 取得 API 資源路徑
2. 指定解析格式
3. 使用 CSS selector 取用資料
範例 Ch3Coz3
String api = "http://........";
Document jsoup = CrawlerPack.getFromJson(api);
jsoup.select("item[jobs*=app]");
重要的定時爬蟲
推廣時間
你需要最好的養蟲專家
Jenkins CI - 地表最強排程工具,還免錢喔
●原始碼取得及更新 (SCM: SVN、Git... )
●Build-tool (Maven、Ant…)
●定時排程(Schedule build)
●通知(Notification)
https://jenkins-ci.org/
爬蟲包實戰
地球比你想像中來的危險
實戰-道德篇
●如非必要,盡可能不去挖掘
各式網頁格式資料
●詳讀開放API使用守則
●不過於頻繁挖堀
●資料去識別化
實戰-入門篇
104人力銀行
http://www.104.com.tw/i/api_doc/jobsearch/index.cfm
優點 挑戰
● 有提供 API 說明文件
● 不需認證
● 提供多種輸出格式練習
● 挫折感低
● 簡單到不行
範例 Ch5Coz1
實戰-入門篇
104人力銀行
http://www.104.com.tw/i/api_doc/jobsearch/index.cfm
範例 Ch5Coz1
String api =
"http://http://www.104.com.tw/i/apis/jobsearch.cfm?order=2&fmt=4&col
s=JOB,NAME&slmin=100000&sltp=S";
Document jsoup = CrawlerPack.getFromXml(api);
jsoup.select("item[jobs*=app]");
找出月薪10萬以上的工作,且職稱有App
c.
實戰-中級篇
Facebook Graph API
https://developers.facebook.com/tools/explorer/
優點
● 超棒 API Exploer
<以下空白>
挑戰
● 用戶認證
● 規則不明確
● API 經常改動
● 限制很多
● 當白老鼠
範例 Ch5Coz2
實戰-中級篇
Facebook Graph API
https://developers.facebook.com/tools/explorer/
API 需要認證策略
1. 盡量選擇取得 token 方式認證 (BEST)
範例 Ch5Coz2
2. 就慢慢寫吧
◢▆▅▄▃-崩╰(〒皿〒)╯潰-▃▄▅▆◣
實戰-中級篇
Facebook Graph API
https://developers.facebook.com/tools/explorer/
FB 取得Long-Term Token 簡述
1
2
範例 Ch5Coz2
實戰-中級篇
Facebook Graph API
https://developers.facebook.com/tools/explorer/
FB 取得Long-Term Token 簡述
取得一組大約60天
有效的Token
範例 Ch5Coz2
實戰-中級篇
Facebook Graph API
https://developers.facebook.com/tools/explorer/
範例 Ch5Coz2
實戰-中級篇
Facebook Graph API
實例應用
https://developers.facebook.com/tools/explorer/
範例 Ch5Coz2
● 關聯規則分析
Reference
● R-arules
● R-apriori
實戰-中級篇
Google Maps API
優點 挑戰
● 立即可用的應用資料
● 使用規則清楚明瞭
● 官網使用範例多
● 資料多元 & 有趣
● 說明文件較難理解
● 部份API 免費額度少
https://developers.google.com/maps/
範例 Ch5Coz3
實戰-中級篇
Google Maps API
https://developers.google.com/maps/
Google Places API Web Service 地方資訊
ex: 方圓500公尺分類為食物的地點
Google Maps Geocoding API
ex: 找出地址可能的座標定位
Google Maps Directions API 導航
ex: 找出兩點之間,最快或最近的交通路線
範例 Ch5Coz3
實戰-中級篇
Google Maps API
https://developers.google.com/maps/
Google Places API Web Service 地方資訊
ex: 方圓500公尺分類為食物的地點
而且還要評價在四顆星以上的地點 怎麼做?
select(“rating:matchesOwn(^4)”) ;
範例 Ch5Coz3
實戰-高階篇
行政院農業委員會開放資料平台
優點
● 具時序性資料
● 穩定定期更新
● 資料淺顯易懂
挑戰
● 中文欄位
● 民國日期格式
● 改寫爬蟲包
http://data.coa.gov.tw/Query/AdvSearch.aspx?id=037
◢▆▅▄▃-崩╰(〒皿〒)╯潰-▃▄▅▆◣
範例 Ch5Coz4
實戰-高階篇
行政院農業委員會開放資料平台
http://data.coa.gov.tw/Query/AdvSearch.aspx?id=037
中文欄位策略
1. 直接中英對照,土法煉鋼 (Good)
2. 使用爬蟲包
jsoup 原始套件無法正常解析中文tag
但爬蟲包可以!
範例 Ch5Coz4
實戰-高階篇
行政院農業委員會開放資料平台
http://data.coa.gov.tw/Query/AdvSearch.aspx?id=037
中文欄位策略
select(“交易日期”).text() ;
select(“作物名稱”).text() ;
select(“平均價”).text() ;
接著,粗爆用中文寫 selector
範例 Ch5Coz4
實戰-高階篇
行政院農業委員會開放資料平台
http://data.coa.gov.tw/Query/AdvSearch.aspx?id=037
實例應用
Time series analysis
Reference
● R-quantmod
範例 Ch5Coz4
實戰-進階篇
國道高速公路局 Traffic Data Collection System
挑戰
http://tisvcloud.freeway.gov.tw/
● 即時性資料
● 資料筆數中等
● 不太穩定的server
● 壓縮格式處理
優點
● 去識別化典範
範例 Ch5Coz5
實戰-進階篇
http://tisvcloud.freeway.gov.tw/
國道高速公路局 Traffic Data Collection System
Apache Common VFS 有解
http https sftp ftp ftps
smb HDFS RAM mine File
zip tar gzip jar ...
壓縮格式資源策略
範例 Ch5Coz5
實戰-進階篇
http://tisvcloud.freeway.gov.tw/
國道高速公路局 Traffic Data Collection System
Apache Common VFS 有解
壓縮格式資源策略
String api = "http://........";
String api = "gz:http://........";
範例 Ch5Coz5
實戰-進階篇
http://tisvcloud.freeway.gov.tw/
國道高速公路局 Traffic Data Collection System
資料視覺化 R-heapmap
實戰-進階篇
http://tisvcloud.freeway.gov.tw/
國道高速公路局 Traffic Data Collection System
資料視覺化 R-散點圖
Thanks
●如何取得爬蟲包及範例?
爬蟲包GitHub
https://github.com/abola/CrawlerPack
●其它問題? mailto:abola921 gmail.com

More Related Content

Viewers also liked

Guava 讓你的程式碼簡潔有力 2014 Java Developer Day
Guava 讓你的程式碼簡潔有力 2014 Java Developer Day Guava 讓你的程式碼簡潔有力 2014 Java Developer Day
Guava 讓你的程式碼簡潔有力 2014 Java Developer Day
書豪 李
 
目的外使用中去識別化時點問題 Rev
目的外使用中去識別化時點問題 Rev目的外使用中去識別化時點問題 Rev
目的外使用中去識別化時點問題 Rev
Ming-Hsuan He
 
Etc資料庫
Etc資料庫Etc資料庫
Etc資料庫
Ming-Hsuan He
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Rack Lin
 
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
奕孝 陳
 
周世恩/資料分析前的奏曲 : 談資料收集的挑戰
周世恩/資料分析前的奏曲 : 談資料收集的挑戰周世恩/資料分析前的奏曲 : 談資料收集的挑戰
周世恩/資料分析前的奏曲 : 談資料收集的挑戰
台灣資料科學年會
 
[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法
台灣資料科學年會
 
姜俊宇/從資料到知識:從零開始的資料探勘
姜俊宇/從資料到知識:從零開始的資料探勘姜俊宇/從資料到知識:從零開始的資料探勘
姜俊宇/從資料到知識:從零開始的資料探勘
台灣資料科學年會
 

Viewers also liked (8)

Guava 讓你的程式碼簡潔有力 2014 Java Developer Day
Guava 讓你的程式碼簡潔有力 2014 Java Developer Day Guava 讓你的程式碼簡潔有力 2014 Java Developer Day
Guava 讓你的程式碼簡潔有力 2014 Java Developer Day
 
目的外使用中去識別化時點問題 Rev
目的外使用中去識別化時點問題 Rev目的外使用中去識別化時點問題 Rev
目的外使用中去識別化時點問題 Rev
 
Etc資料庫
Etc資料庫Etc資料庫
Etc資料庫
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
打造完全免費的,JAVA專案持續整合環境_ 2013 java developer_day_by 李書豪
 
周世恩/資料分析前的奏曲 : 談資料收集的挑戰
周世恩/資料分析前的奏曲 : 談資料收集的挑戰周世恩/資料分析前的奏曲 : 談資料收集的挑戰
周世恩/資料分析前的奏曲 : 談資料收集的挑戰
 
[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法[系列活動] 文字探勘者的入門心法
[系列活動] 文字探勘者的入門心法
 
姜俊宇/從資料到知識:從零開始的資料探勘
姜俊宇/從資料到知識:從零開始的資料探勘姜俊宇/從資料到知識:從零開始的資料探勘
姜俊宇/從資料到知識:從零開始的資料探勘
 

Similar to JCConf 2015 TW 高效率資料爬蟲組合包

Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
Bo-Yi Wu
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
Jui An Huang (黃瑞安)
 
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
Johnny Sung
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027Wei Sun
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
scott liao
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
勇浩 赖
 
1.[web security share]google_hacking
1.[web security share]google_hacking1.[web security share]google_hacking
1.[web security share]google_hacking
Mike Ching
 
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
Paul Chao
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
Paul Chao
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
Wen-Tien Chang
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_finalWei Sun
 
Python crawling tutorial
Python crawling tutorialPython crawling tutorial
Python crawling tutorial
Chen-Ming Yang
 
构建网络工具箱
构建网络工具箱构建网络工具箱
构建网络工具箱
Lv Jian
 
Pyramid框架介绍
Pyramid框架介绍Pyramid框架介绍
Pyramid框架介绍
panjunyong
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
zhen chen
 
Homebrew Updater
Homebrew UpdaterHomebrew Updater
Homebrew Updater
Chang Yu-Sheng
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
Larry Cai
 
[系列活動] Python 爬蟲實戰
[系列活動] Python 爬蟲實戰[系列活動] Python 爬蟲實戰
[系列活動] Python 爬蟲實戰
台灣資料科學年會
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
Earou Huang
 

Similar to JCConf 2015 TW 高效率資料爬蟲組合包 (20)

Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
 
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
[AI / ML] 用 LLM (Large language model) 來整理您的知識庫 @Devfest Taipei 2023
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
 
1.[web security share]google_hacking
1.[web security share]google_hacking1.[web security share]google_hacking
1.[web security share]google_hacking
 
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_final
 
Python crawling tutorial
Python crawling tutorialPython crawling tutorial
Python crawling tutorial
 
构建网络工具箱
构建网络工具箱构建网络工具箱
构建网络工具箱
 
Pyramid框架介绍
Pyramid框架介绍Pyramid框架介绍
Pyramid框架介绍
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
Homebrew Updater
Homebrew UpdaterHomebrew Updater
Homebrew Updater
 
Software Engineer Talk
Software Engineer TalkSoftware Engineer Talk
Software Engineer Talk
 
[系列活動] Python 爬蟲實戰
[系列活動] Python 爬蟲實戰[系列活動] Python 爬蟲實戰
[系列活動] Python 爬蟲實戰
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
 

JCConf 2015 TW 高效率資料爬蟲組合包