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

更新於 發佈於 閱讀時間約 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
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本篇文章介紹網路爬蟲的基本概念和操作流程,適合初學者瞭解爬蟲的功能與合法使用方式。文章說明爬蟲如何自動蒐集資料及 API 的重要角色,同時提醒用戶注意指南與網站規範。作者也自己嘗試網路爬蟲。也期許自己可以在未來學習到網頁時,能成功操作 LinkedIn 的爬蟲
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
筆者從警以來,每天都有民眾來派出所詢問各種法律問題,但法規多如牛毛,有些因不常用,連同事間都是口耳相傳,一知半解。這時除了找律師諮詢外,也能透過上網以類似案件判決書查詢,讓法官或主管機關直接告訴你答案。今天筆者不藏私,分享3個常用網站,民眾除可增進法律知識,更能解決自己或親友的法律問題,捍衛應有權益
有網際網路以後,的確任何的資訊都可以在網路上搜尋到, 但一個很大的問題就是「資訊是破碎的」。 這也就造成有些人的工作, 就是專門收集網路上的訊息,整理出系統,制訂框架, 寫出一篇篇充滿資源連結的文章, 作為導覽讀者遨遊網路的領路人。 而現在AI 出現,這些領路人,可以把工作做得更好!
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
逛書店時看到了這本書,書名有點吸引我,個人對法律不太懂,但蠻喜歡看法律相關的知識,包括書籍或是影音形式的內容。之所以喜歡,是因為畢竟法律跟人們的生活息息相關,而且在法律人的答辯之間,閱聽眾可以客觀的立場,來培養思辨的能力。但前提是不能太深奧,或全都是法條類,這樣可能翻兩頁就看不下去了。比較喜歡看
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本篇文章介紹網路爬蟲的基本概念和操作流程,適合初學者瞭解爬蟲的功能與合法使用方式。文章說明爬蟲如何自動蒐集資料及 API 的重要角色,同時提醒用戶注意指南與網站規範。作者也自己嘗試網路爬蟲。也期許自己可以在未來學習到網頁時,能成功操作 LinkedIn 的爬蟲
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
筆者從警以來,每天都有民眾來派出所詢問各種法律問題,但法規多如牛毛,有些因不常用,連同事間都是口耳相傳,一知半解。這時除了找律師諮詢外,也能透過上網以類似案件判決書查詢,讓法官或主管機關直接告訴你答案。今天筆者不藏私,分享3個常用網站,民眾除可增進法律知識,更能解決自己或親友的法律問題,捍衛應有權益
有網際網路以後,的確任何的資訊都可以在網路上搜尋到, 但一個很大的問題就是「資訊是破碎的」。 這也就造成有些人的工作, 就是專門收集網路上的訊息,整理出系統,制訂框架, 寫出一篇篇充滿資源連結的文章, 作為導覽讀者遨遊網路的領路人。 而現在AI 出現,這些領路人,可以把工作做得更好!
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
逛書店時看到了這本書,書名有點吸引我,個人對法律不太懂,但蠻喜歡看法律相關的知識,包括書籍或是影音形式的內容。之所以喜歡,是因為畢竟法律跟人們的生活息息相關,而且在法律人的答辯之間,閱聽眾可以客觀的立場,來培養思辨的能力。但前提是不能太深奧,或全都是法條類,這樣可能翻兩頁就看不下去了。比較喜歡看