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

更新於 發佈於 閱讀時間約 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內容數
正在就讀法律系的你,一定耳聞過司律考試,甚至已經下場考過。我有幸從考海中上岸,希望透過我的經驗,幫助正在迷惘、焦急、或是洩氣的你/妳。專題內容包含是否要參加考試、如何準備考試、面授與函授的優缺點比較等等,幫助你/妳找到最適合自己的解方。
留言
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
本篇文章介紹網路爬蟲的基本概念和操作流程,適合初學者瞭解爬蟲的功能與合法使用方式。文章說明爬蟲如何自動蒐集資料及 API 的重要角色,同時提醒用戶注意指南與網站規範。作者也自己嘗試網路爬蟲。也期許自己可以在未來學習到網頁時,能成功操作 LinkedIn 的爬蟲
Thumbnail
本篇文章深入剖析網際網路與全球資訊網(WWW)的核心原理,揭示它們的歷史演變、運作機制及其在現代數位世界中的關鍵作用。從網際網路的結構到全球資訊網的實際應用,再到保障資料安全與穩定傳輸的關鍵技術—HTTP 和 HTTPS,這篇文章將幫助您全面理解背後的技術如何驅動我們的數位生活。
Thumbnail
在數位時代,建立一個網站已成為個人和企業展示自我、推廣品牌的重要手段。無論是部落格、商務網站還是網上商店,擁有一個專屬的網站可以有效吸引目標受眾。本文將帶您通過六個簡單的步驟,輕鬆架設屬於您的網站。
Thumbnail
Chrome 的開發者工具中,你可以模擬 Googlebot 或其他搜尋引擎爬蟲的網頁抓取情況。
Thumbnail
當我們在考慮網頁文案的長度時,常常會聽到「越短越好」的說法,認為簡潔的內容更能吸引讀者,因為現代人的耐性有限。然而,這種觀念是否100%正確呢?在最近的工作,我需要更新公司網頁,過程中讓我對這個問題有了更多的問號。
Thumbnail
現在Google很方便,輕鬆就能找到更多免費商用的圖庫資源,這篇文章單純是整理一些我常用到的免費插圖素材,並提供一些"設計風格"的參考描述。
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
筆者從警以來,每天都有民眾來派出所詢問各種法律問題,但法規多如牛毛,有些因不常用,連同事間都是口耳相傳,一知半解。這時除了找律師諮詢外,也能透過上網以類似案件判決書查詢,讓法官或主管機關直接告訴你答案。今天筆者不藏私,分享3個常用網站,民眾除可增進法律知識,更能解決自己或親友的法律問題,捍衛應有權益
有網際網路以後,的確任何的資訊都可以在網路上搜尋到, 但一個很大的問題就是「資訊是破碎的」。 這也就造成有些人的工作, 就是專門收集網路上的訊息,整理出系統,制訂框架, 寫出一篇篇充滿資源連結的文章, 作為導覽讀者遨遊網路的領路人。 而現在AI 出現,這些領路人,可以把工作做得更好!
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理
Thumbnail
本篇文章介紹網路爬蟲的基本概念和操作流程,適合初學者瞭解爬蟲的功能與合法使用方式。文章說明爬蟲如何自動蒐集資料及 API 的重要角色,同時提醒用戶注意指南與網站規範。作者也自己嘗試網路爬蟲。也期許自己可以在未來學習到網頁時,能成功操作 LinkedIn 的爬蟲
Thumbnail
本篇文章深入剖析網際網路與全球資訊網(WWW)的核心原理,揭示它們的歷史演變、運作機制及其在現代數位世界中的關鍵作用。從網際網路的結構到全球資訊網的實際應用,再到保障資料安全與穩定傳輸的關鍵技術—HTTP 和 HTTPS,這篇文章將幫助您全面理解背後的技術如何驅動我們的數位生活。
Thumbnail
在數位時代,建立一個網站已成為個人和企業展示自我、推廣品牌的重要手段。無論是部落格、商務網站還是網上商店,擁有一個專屬的網站可以有效吸引目標受眾。本文將帶您通過六個簡單的步驟,輕鬆架設屬於您的網站。
Thumbnail
Chrome 的開發者工具中,你可以模擬 Googlebot 或其他搜尋引擎爬蟲的網頁抓取情況。
Thumbnail
當我們在考慮網頁文案的長度時,常常會聽到「越短越好」的說法,認為簡潔的內容更能吸引讀者,因為現代人的耐性有限。然而,這種觀念是否100%正確呢?在最近的工作,我需要更新公司網頁,過程中讓我對這個問題有了更多的問號。
Thumbnail
現在Google很方便,輕鬆就能找到更多免費商用的圖庫資源,這篇文章單純是整理一些我常用到的免費插圖素材,並提供一些"設計風格"的參考描述。
Thumbnail
從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
Thumbnail
筆者從警以來,每天都有民眾來派出所詢問各種法律問題,但法規多如牛毛,有些因不常用,連同事間都是口耳相傳,一知半解。這時除了找律師諮詢外,也能透過上網以類似案件判決書查詢,讓法官或主管機關直接告訴你答案。今天筆者不藏私,分享3個常用網站,民眾除可增進法律知識,更能解決自己或親友的法律問題,捍衛應有權益
有網際網路以後,的確任何的資訊都可以在網路上搜尋到, 但一個很大的問題就是「資訊是破碎的」。 這也就造成有些人的工作, 就是專門收集網路上的訊息,整理出系統,制訂框架, 寫出一篇篇充滿資源連結的文章, 作為導覽讀者遨遊網路的領路人。 而現在AI 出現,這些領路人,可以把工作做得更好!
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理