在昨天我們建立了模型,並可使用管理網站手動增加書籍與作者的資料。
但回顧 Day10所列的需求,實際使用情境上,使用者只需輸入網址,系統需判斷是否為可支援網站,並自動抓取書名和作者等資訊。
預計使用技術如下:
故在繼續Django挑戰前,今天將先進行正則表示式的練習,以便後續網站開發使用。
正則表示式的比對寫法:
import re
regex = re.compile(r'正則表示式')
target = "欲比對的內容"
result = regex.search(target)
大部分找到的教學網站的寫法,主要流程都是先將正則表示式進行compile(),後續使用complie產生的物件做search(),但今天剛好看到一篇分享,裡面提到其實re模組提供的許多函式中都已包含compile(),故統一事先宣告compile()其實是資源的浪費。
故今天練習的完整程式如下:
import re
# 正則表示式:比對網址pattern,並抓取novelid
regex = r'https?:\/\/www\.jjwxc\.net\/onebook\.php\?novelid=(\d+)'
urlgroup = ( "http://www.jjwxc.net/onebook.php?novelid=3415053",
"http://www.google.com"
)
for url in urlgroup:
result = re.search(regex, url)
if result is None:
print("Not Match! URL:" + url)
else:
print("Match!")
print("Group():" + result.group())
print("Group(1):" + result.group(1))
輸出結果:
Match!
Group():http://www.jjwxc.net/onebook.php?novelid=3415053
Group(1):3415053
Not Match! URL:http://www.google.com