環境法規之下載
背景
- 這個 Python 腳本(reg_json.py)用於從法務部全國法規資料庫(下稱系統)個別法規網頁中提取法律文本、並保存為 JSON 檔案備用。
- 同樣是url字串存在著問號及等號的情況,系統不接受
requests
、不接受browser的driver.get
,甚至也不接受os.system
執行wget
。 - 只接受將url寫在執行腳本中、透過bash來執行。
- 詳細原因不明,GPT暗示可能是網站的防爬策略,但是系統卻對簡易批次的
wget
開放,這點似乎不符邏輯。 - 此腳本適用於自動化提取和儲存系統特定格式的網頁上的法律文件信息,但它依賴於該系統 HTML 結構的網頁,針對不同的網站會需要進行調整。
程式說明
以下是腳本的主要步驟:
- 讀取 HTML 內容:
- 從 ‘href_n.txt’ 檔案讀取 HTML 內容。
- 解析 HTML:
- 使用 BeautifulSoup 程式庫解析 HTML 內容。
- 取得法律文件的連結和標題:
- 找到
<a>
標籤以取得法律文件的 URL 和標題。
- 找到
- 檢查文件是否已存在:
- 檢查是否已經下載了對應的 HTML 檔案。 如果沒有,則執行下載。
- 下載法律文檔頁面:
- 將url中的問號(?)及等號(=)加上反斜線,形成新的字串
url2
以正確傳遞程式引數。 - 將
url2
及wget
指令寫在a.cs
內,下載法律文件的頁面。 - 使用
os.system
執行命令列操作。
- 將url中的問號(?)及等號(=)加上反斜線,形成新的字串
url = a_tag['href'].split('&')[0].split('=')[1]
url="https://law.moj.gov.tw/LawClass/LawAll.aspx?pcode="+url
title = a_tag['title']
...
url2=url.replace('?','\\?').replace('=','\\=')
with open('a.cs','w') as f:
f.write('url='+url2+'\n/usr/bin/wget -q $url -O '+title+'.html\n')
os.system('chmod u+x ./a.cs;./a.cs' )
- 解析法律文件頁:
- 再次使用 BeautifulSoup 解析下載的 HTML 檔案。
- 提取法律名稱、日期和具體條款。
- 提取並保存法律條文:
- 遍歷所有法律條文的
<a>
標籤。 - 提取法律條文的編號和內容。
- 將提取的資訊保存在字典
result
中。
- 遍歷所有法律條文的
- 將結果儲存為 JSON 檔案:
- 將
result
字典轉換為 JSON 格式並儲存到檔案中。
- 將