網頁爬蟲實作-下載司法院書狀範本

更新於 2023/02/13閱讀時間約 10 分鐘

緣起

我曾經於高中時期接觸過一點程式語言,當時是學習C++,然而後期因為對影像合成方面比較有興趣,就轉往學習Adobe Creative系列,因此程式語言一直都是停留在基礎的演算法階段。
近幾年因為機器學習與人工智慧成為顯學,Python也隨之崛起。綜觀市面上的Python書籍,必定會有關於網頁爬蟲的實作章節,可謂大量、重複性資料收集工作的福音。我雖然對此早有興趣,但先前忙於工作,一直沒有認真研究。
先前因為工作的緣故,經常需要收集、整理常用的司法書狀。然而,光是司法院所提供的範本就有上百種,如果要一個一個瀏覽、篩選,難免會有漏網之魚,且必須耗費大量時間在點網頁、複製資訊這種枯燥的過程上。
於是惰性再次燃起了我學習爬蟲的動力。但如果從頭開始學Python應該是緩不濟急,因此我轉而尋求無須coding的替代方案,而有了這篇學習紀錄。

設定目標

誠如前述,我希望從眾多書狀海中,挑選出常用的書狀類型。在挑選之前必須先知道司法院有哪些書狀,以及更新日期、所適用的法規等等詳細內容。
司法院本身就已經將書狀分為幾大類,並以目錄頁面的形式整理,正是適合爬蟲上場的地方。

準備工作

要進行爬蟲之前,最重要也最困難的就是「觀察網頁」。
由於爬蟲也是程式,程式講求邏輯,想要爬蟲程式幫忙完成重複性高的工作,就必須先找出重複的規律。以網頁爬蟲而言,規律主要可區分為「網址」和「內容」。

網址

首先觀察網址。
(註:首次進入頁面時的網址為https://www.judicial.gov.tw/tw/lp-1365-1.html,但切換至第二頁再切回第一頁時,因為有頁面篩選器作用的緣故,使得第一頁的網址變得與第二頁類似,詳下述)
而目錄頁面的第二頁就與第一頁僅差一個數字,而且是由1變2:https://www.judicial.gov.tw/tw/lp-1365-1-2-20.html
但每個狀的子頁面網址就沒那麼幸運,後綴編號都不一樣而且沒有規律。
簡單抓三個書狀的網址來比較,可以發現幾乎是沒有任何規律可言,因此無法單純透過網址規律變化的方式進行爬蟲。

內容

雖然每個狀的子頁面網址沒有規律,但每個頁面的布局欄位的命名都相同,因此只要進到各個書狀的子頁面就能快速抓取特定位置的內容。

小結

因此,大致上可以總結出來,目錄頁面的網址具有規律;各個書狀的網址沒有規律,但頁面架構一致。
不同網站可能有不一樣的佈局跟規律,必須要逐一、個別觀察,沒有放諸四海皆準的原則。但如果有架站經驗或是經常觀察網址的人,會更容易找到其中的規律,簡而言之就是熟能生巧。

爬蟲實作

爬蟲工具

市面上現成的爬蟲工具眾多,都是不需要直接coding的,有安裝在本機上的,也有免安裝的。
由於我習慣使用Chrome瀏覽器,因此就選擇了免安裝的Chrome擴充功能 - Web Scraper,作為本次實作爬蟲的工具。

安裝

Web Scraper 會整合在Chrome右鍵的「檢查」欄,或是直接按擴充功能也可開啟。開啟Web Scraper後會先要求變更版面配置,必須更換成上下的版面配置。

建立爬蟲

Create sitemap
更換版面配置後按下「Create new sitemap → Create sitemap」,這邊主要是指定要進行爬蟲的網頁範圍
Sitemap name可以是任意的英文字,而下方Start URL的欄位就填上要進行爬蟲的網頁網址,以上面非訟書狀的例子而言,就是第一頁的網址:https://www.judicial.gov.tw/tw/lp-1365-1-1-20.html
又因為第二頁與第一頁的網址具有規律,因此可以直接在這邊設定範圍,讓爬蟲工具自動去爬第二頁。而方式就是在變化的網址處用 [ ] 輸入範圍。因此URL就會變成:https://www.judicial.gov.tw/tw/lp-1365-1-[1-2]-20.html
(註:如果是以等比增加,例如第一頁為10、第二頁為20,以10為公比,則可輸入成 [10-20:10] )
輸入完成後按下 Create Sitemap 即可進入爬蟲步驟頁面。
Selectors
Web Scraper 的爬蟲工具有好幾種型態,最常見的是Text,也就是擷取純文字。第二個是Link,與Text不同的地方在於Link是擷取超連結的網址,而不是文字本身。
舉例而言,當使用Text抓取「法人登記聲請書(法人設立登記、變更登記)」項目時,就會抓下這一串純文字;如用Link抓取,則會抓取這串文字背後的超連結,也就是https://www.judicial.gov.tw/tw/cp-1365-57442-44b2f-1.html,並且可以進入該頁面進行子頁面的抓取工作
回到上面的範例,我們必須先在目錄頁建立Link爬蟲,讓爬蟲依序將所有目錄中的書狀網址都爬下來,因此先按「Add new Selector」新增一個Link爬蟲
由於目錄頁有多個Link需要抓取,因此底下的「Multiple」方塊必須勾選。
接著按下「Select」選取要擷取的東西,先點一下第一項「法人登記聲請書(法人設立登記、變更登記)」,呈現紅框時就是已經選取,接著再選取第二項的「夫妻財產制契約登記聲請書」,此時爬蟲會直接判斷並選取所有相類似的物件,全部的書狀名稱就會一次全部選取起來,最後按下「Done selecting」
選取完成後爬蟲就會標註出需要擷取的範圍是「書狀名稱欄位」,也可以再按一下旁邊的Data preview預覽一下抓取的結果
設定完成後就可以按下最下方的Save selector,這樣就新增完第一個爬蟲步驟。
如果目錄頁還有其他要抓取的東西,可以依樣畫葫蘆繼續新增,但在這個例子中,目錄頁已經沒有其他要抓取的東西,而是要進入子頁面進行抓取,因此按一下剛剛新增完的Link步驟,會進入另一個新增步驟的頁面,也就是爬蟲藉由Link進入子頁面後要進行的動作。
這時再點選網頁上的「法人登記聲請書(法人設立登記、變更登記)」,進入第一個子頁面,繼續設定子頁面的爬蟲。
在子頁面中,預計要抓取三項內容,分別是:相關條文使用說明下載連結更新日期
其中相關條文、使用說明、更新日期都是純文字內容,因此使用Text爬蟲抓取即可;至於下載連結,則可以使用HTML型態進行抓取。
相關條文
使用說明
更新日期
下載連結
設定完成後,Link下的爬蟲步驟共有四個,分別是三個Text和一個HTML。由於各個Text或HTML步驟都只擷取一項內容,因此底下的Multiple方塊就都不用勾選。
完成之後請按上一頁回到目錄頁,也就是Start URL的地方,並且按下選單「Sitemap test → Scrape」開始進行爬蟲。
開始前還可設定載入和延遲時間,如果碰到網頁反應比較慢,可以增加數值,以免網頁還沒跑出來,爬蟲就爬了空值下來。這邊使用預設的2000 ms。設定完成後按下 Start scraping。
開始爬蟲時會跳出一個單獨的視窗,並快速的進出子頁面進行爬蟲作業,待爬蟲完成時,視窗會自動關閉。
爬蟲完成後,請按下「refresh」載入剛剛爬下來的資料。如果爬下來的資料不符合預期,可能是剛剛的範圍或爬蟲型態有誤,可以多調整幾次。
Export data
如果資料沒有問題,可以按下選單「Sitemap test → Export data」匯出資料,免費版本的 Web Scraper 可以匯出成excel檔或csv檔,這邊選擇csv以便進行後續資料清理。
到此為止,就已經完成一次爬蟲作業,匯出的csv檔即是所謂的raw data。

資料清理與應用

在大數據的領域中,匯出的raw data可以再使用資料工具進行清理(data cleaning),以便後續分析應用。舉例而言,前面提到的書狀下載連結,爬蟲直接爬下的HTML內容如下:
<a href="<https://www.judicial.gov.tw/tw/dl-51346-463fedd5e22a4991a5c72a1dec938971.html>" title="民事聲請支付命令(以多張支票聲請者).odt">民事聲請支付命令(以多張支票聲請者).odt</a><br><a href="<https://www.judicial.gov.tw/tw/dl-51347-5b445d12dbfe4f9b856e75347ac32ed6.html>" title="民事聲請支付命令(以多張支票聲請者).pdf">民事聲請支付命令(以多張支票聲請者).pdf</a>
想要得到單純的下載連結,就必須在此步驟進行切割、清理。由於資料清理的工具非常多,在此不多做贅述。清理完成後就可以繼續進行後續的分析、利用,以下是我清理後的部分結果:

總結

俗話說的好:科技始終來自於人性。網頁爬蟲工具,可以幫助人類完成重複性高且枯燥、瑣碎的收集過程。我透過本次有目的的實作,也算是初嘗網頁爬蟲的甜頭,未來應該還是會努力學習Python,畢竟能自己寫程式,就代表能自動化處理更多種樣態的工作。
最後不免俗地還是要加註警語:任何網站上的內容都是有著作權的,我國的著作權也不以登記為必要。換句話說,當網頁寫好的那一瞬間就自動取得著作權。因此在使用爬蟲收集網頁資訊時,必須注意著作權的相關規範 (相關文章:網頁爬蟲的相關法律責任)。科技沒有好壞之分,爬蟲可以是省時的利器,也可以是侵權的凶器,使用前應詳閱著作權法規範。
avatar-img
38會員
52內容數
正在就讀法律系的你,一定耳聞過司律考試,甚至已經下場考過。我有幸從考海中上岸,希望透過我的經驗,幫助正在迷惘、焦急、或是洩氣的你/妳。專題內容包含是否要參加考試、如何準備考試、面授與函授的優缺點比較等等,幫助你/妳找到最適合自己的解方。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
GYB的沙龍 的其他內容
在返校一年多後,總算是將這篇文章順利完成。辭職對於任何人來說都是重大的決定,而決定返回校園唸書更是需要決心。尤其在面對論文時,看著身旁朋友不斷高升、領年終,心裡難免忐忑。期許自己能善用返校期間的各種資源,讓自己蹲得更低、跳得更高。
一開始我將Bitwarden架設在我私人的伺服器上,過程中吃了不少苦頭。後來架設於NAS上,大幅降低佈建難度。且NAS的原始設計就是長時間不間斷地開機運行,我認為是現階段自架Bitwarden的最佳方案。
Bitwarden是現階段值得推薦的一款密碼管理軟體,可以避免「一個密碼打天下」的危險狀態。若選擇自架Bitwarden伺服器則可免費獲得付費訂閱版本的功能全部功能,對於有一點技術能力的人來說,是個經濟實惠的選擇。
最近剛修完研究所的資訊隱私課程,課程中閱讀了Tim Wu的《The Attention Merchants》一書,對於廣告行業、自媒體有了不一樣的認識。 無論是創作者還是使用者,我們都不斷的在不同平台之間游走-創作者帶著創作、使用者帶著注意力。
如何讓筆電、平板合作順暢,應該是未來所有平板廠商都必須面對的問題。在沒有購入蘋果全家桶之前,選擇iPad必定會面臨如何跨裝置同步使用的問題。因此這篇文章主要就是紀錄我如何克服其中的困難,提供給有同樣需求的讀者參考。
我認為 LiquidText 是一款功能齊全、穩定的研讀軟體,很適合學生或需要研究的工作人士。如果你有大量研讀文獻的需求,不妨試試看 LiquidText,應該會為你帶來事半功倍的效果!
在返校一年多後,總算是將這篇文章順利完成。辭職對於任何人來說都是重大的決定,而決定返回校園唸書更是需要決心。尤其在面對論文時,看著身旁朋友不斷高升、領年終,心裡難免忐忑。期許自己能善用返校期間的各種資源,讓自己蹲得更低、跳得更高。
一開始我將Bitwarden架設在我私人的伺服器上,過程中吃了不少苦頭。後來架設於NAS上,大幅降低佈建難度。且NAS的原始設計就是長時間不間斷地開機運行,我認為是現階段自架Bitwarden的最佳方案。
Bitwarden是現階段值得推薦的一款密碼管理軟體,可以避免「一個密碼打天下」的危險狀態。若選擇自架Bitwarden伺服器則可免費獲得付費訂閱版本的功能全部功能,對於有一點技術能力的人來說,是個經濟實惠的選擇。
最近剛修完研究所的資訊隱私課程,課程中閱讀了Tim Wu的《The Attention Merchants》一書,對於廣告行業、自媒體有了不一樣的認識。 無論是創作者還是使用者,我們都不斷的在不同平台之間游走-創作者帶著創作、使用者帶著注意力。
如何讓筆電、平板合作順暢,應該是未來所有平板廠商都必須面對的問題。在沒有購入蘋果全家桶之前,選擇iPad必定會面臨如何跨裝置同步使用的問題。因此這篇文章主要就是紀錄我如何克服其中的困難,提供給有同樣需求的讀者參考。
我認為 LiquidText 是一款功能齊全、穩定的研讀軟體,很適合學生或需要研究的工作人士。如果你有大量研讀文獻的需求,不妨試試看 LiquidText,應該會為你帶來事半功倍的效果!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在當今的IG時代,多媒體內容已成為網頁設計不可或缺的一部分,它不僅豐富了用戶的互動體驗,還能顯著提升網站的吸引力和溝通效率。本文將探討多媒體內容對用戶體驗(UX)的影響、SEO最佳實踐與多媒體的整合方法,並提供成功整合多媒體的網站案例。
Thumbnail
交互式元素在現代網頁設計中扮演著越來越重要的角色,不僅因為它們能夠提升用戶體驗,還因為它們對搜索引擎最佳化(SEO)帶來的潛在好處。本文將探討交互式設計對SEO的好處、實施交互式元素的方法,並通過一個成功案例分析,展示這些元素如何有效地提升網站性能和搜索排名。
Thumbnail
響應式網頁設計(Responsive Web Design, RWD)已成為現代網站開發不可或缺的一部分。響應式設計不僅能夠確保網站在各種設備上都能提供良好的用戶體驗,而且對於搜索引擎優化(SEO)也有著重要的影響。本文將探討響應式設計的最新技術、其對SEO的優勢以及一些成功的實際案例。
Thumbnail
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
Thumbnail
在如今的資訊時代,如何有效的獲取並處理數據,成為了許多專業人士和企業的重要需求,爬蟲技術,作為獲取網絡數據的重要工具,其重要性不言而喻,而這篇文章將分享Python爬蟲的基礎,讓你能獲取想要的網頁數據。
Thumbnail
這篇論文是用來交易ETF,利用cnn神經網路去預測買點跟賣點由於CNN吃的是圖片輸入更精確來說是一個二維矩陣輸入因此論文作者將ETF的開高低收去計算出15種技術指標乘上15天剛好就可以作成15X15的矩陣(當作圖片)餵給CNN模型當作輸入
Thumbnail
在數位時代中,無論是什麼產業類型,當您經營一個品牌時,除了建立社群媒體外,品牌官網 可說是與消費者溝通的必要橋樑,不只可以做為社群導流的終點站,也有機會在搜尋結果頁面中曝光,獲得更多潛在流量。
Thumbnail
我在網頁領域打滾 5 年多,2017年擔任網頁設計師(ui/ux設計師)後來轉換跑道2018年成為網頁工程師(前端工程師),要從0開始自行架設網站絕對是具備能力,但創業到現在我仍然沒有選擇架設網站,想跟大家分享身為現役網頁工程師我會選擇不架設網站的理由。 擁有自己的品牌官網? 是想要還是必要?
Thumbnail
"無障礙" 主要是形容一些建築物或一些讓公眾使用的地方﹐是否設有方便身體有殘障的人士使用的設施。例如: 輪椅使用者的斜坡、失明人士的導盲徑...等等。除此之外﹐在虛擬的互聯網世界裡同樣有 "無障礙" 的概念。 當我們製作網頁時﹐加入以下的技巧﹐網頁就能夠方便視障、聽障人士使用:
Thumbnail
「電子書」的確不怎麼像「書」,若要認真定位「電子書」,大概就是以編輯過的內容分章分節,用以「閱讀一本書」的思維去𢑥整出它應有的功能並提供「閱讀一本書」的體驗。說穿了,電子書就是很多個被排版在xhtml而連結起的檔案。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在當今的IG時代,多媒體內容已成為網頁設計不可或缺的一部分,它不僅豐富了用戶的互動體驗,還能顯著提升網站的吸引力和溝通效率。本文將探討多媒體內容對用戶體驗(UX)的影響、SEO最佳實踐與多媒體的整合方法,並提供成功整合多媒體的網站案例。
Thumbnail
交互式元素在現代網頁設計中扮演著越來越重要的角色,不僅因為它們能夠提升用戶體驗,還因為它們對搜索引擎最佳化(SEO)帶來的潛在好處。本文將探討交互式設計對SEO的好處、實施交互式元素的方法,並通過一個成功案例分析,展示這些元素如何有效地提升網站性能和搜索排名。
Thumbnail
響應式網頁設計(Responsive Web Design, RWD)已成為現代網站開發不可或缺的一部分。響應式設計不僅能夠確保網站在各種設備上都能提供良好的用戶體驗,而且對於搜索引擎優化(SEO)也有著重要的影響。本文將探討響應式設計的最新技術、其對SEO的優勢以及一些成功的實際案例。
Thumbnail
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
Thumbnail
在如今的資訊時代,如何有效的獲取並處理數據,成為了許多專業人士和企業的重要需求,爬蟲技術,作為獲取網絡數據的重要工具,其重要性不言而喻,而這篇文章將分享Python爬蟲的基礎,讓你能獲取想要的網頁數據。
Thumbnail
這篇論文是用來交易ETF,利用cnn神經網路去預測買點跟賣點由於CNN吃的是圖片輸入更精確來說是一個二維矩陣輸入因此論文作者將ETF的開高低收去計算出15種技術指標乘上15天剛好就可以作成15X15的矩陣(當作圖片)餵給CNN模型當作輸入
Thumbnail
在數位時代中,無論是什麼產業類型,當您經營一個品牌時,除了建立社群媒體外,品牌官網 可說是與消費者溝通的必要橋樑,不只可以做為社群導流的終點站,也有機會在搜尋結果頁面中曝光,獲得更多潛在流量。
Thumbnail
我在網頁領域打滾 5 年多,2017年擔任網頁設計師(ui/ux設計師)後來轉換跑道2018年成為網頁工程師(前端工程師),要從0開始自行架設網站絕對是具備能力,但創業到現在我仍然沒有選擇架設網站,想跟大家分享身為現役網頁工程師我會選擇不架設網站的理由。 擁有自己的品牌官網? 是想要還是必要?
Thumbnail
"無障礙" 主要是形容一些建築物或一些讓公眾使用的地方﹐是否設有方便身體有殘障的人士使用的設施。例如: 輪椅使用者的斜坡、失明人士的導盲徑...等等。除此之外﹐在虛擬的互聯網世界裡同樣有 "無障礙" 的概念。 當我們製作網頁時﹐加入以下的技巧﹐網頁就能夠方便視障、聽障人士使用:
Thumbnail
「電子書」的確不怎麼像「書」,若要認真定位「電子書」,大概就是以編輯過的內容分章分節,用以「閱讀一本書」的思維去𢑥整出它應有的功能並提供「閱讀一本書」的體驗。說穿了,電子書就是很多個被排版在xhtml而連結起的檔案。