C/C++寫久了,為了轉換心情,開發了一個玩具Website Parser。把太過複雜的網頁元素清掉,只留下Title跟必要的資訊。
採用的是Python3跟BeautifulSoup4,雖然Python的文章看了不少。不過這倒是第一次認真寫點東西(雖然也只是個玩具)
獲取網頁資訊
用最簡單的方式來獲取網頁,方法不是最好,但是可以用。
1 2 3 4
| def getHtml(url): htmlDoc = request.urlopen(url).read() htmlDoc = htmlDoc.decode('UTF-8') return htmlDoc
|
將html轉成 Beautiful Soup Object
1
| soup = BeautifulSoup(htmlDoc, "lxml")
|
砍掉無謂的網頁元件
砍掉所有符合條件的 Tag
1 2
| for script in soup.find_all('script'): script.decompose()
|
砍掉特定的 Tag
1 2 3
| div = soup.find("div", {"id": "full-btm"}) if div is not None: div.decompose()
|
砍掉 Tag中的某個屬性
1 2 3
| div = soup.find("div", {"id": "full-btm"}) if div is not None: del div["attribute"]
|
把清除過的 Soup 存回 HTML
1 2 3 4
| html = soup.prettify("utf-8")
with open("output.html", "wb") as file: file.write(html)
|
雖然只是個玩具,不過至少對Python有多一點感覺了,寫完之後才發現Sanitize HTML with Beautiful Soup這篇早就有了,真是後知後覺好幾年。