0%

Write a toy website parser in Python

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這篇早就有了,真是後知後覺好幾年。