Week 11 小作業 - 竹區 Deadline: 5/31(一) 23:59 / 北區 Deadline: 6/1(二) 23:59
繳交表單:https://forms.gle/fLHzYZ9CvxdPussw5
(5/27)題敘更新:若無法正確下載某些漫畫,請做好 error handling(詳細請見下文)
大家在學習完這些關於網路、爬蟲的知識之後,來試試操作看看抓一次想要的東西吧!
xkcd.com 是一個很酷的漫畫網站,從 2005 年開始,網站上上面會不定期刊載作者 Randall Munroe 繪製的漫畫,經常以火柴形狀的人物呈現許多生活中不同主題的梗或趣味話題。
先在這裡附上幾篇:
你可能已經看過這個很具識別性的畫風。
每則漫畫依數字順序編號,從 xkcd: 1 一路累積到目前的 xkcd: 2466 號,打開首頁的話則隨時能看到最新的漫畫,還有 Random 按鈕可以隨機挑選。
另外,由於 Randall 的梗經常牽涉科技、科學、數學與哲學等多領域的知識,讀者不一定有通盤接觸,因此甚至有 Wiki 共編網站專門幫網友解說每則 xkcd 漫畫裡面的笑點跟典故。
如果覺得有趣的話,可以當作練英文好好翻一翻。
我們希望你製作一個下載器的 python script 程式,方便我們在電腦上閱覽 xkcd 上的漫畫圖片。
這個下載器 xkcd.py
必須有三個功能,必須讓使用者以輸入數字或代碼選擇功能,介面上要 print 出這兩項功能的簡介:
從網路下載,寫入到一個二進位檔案的方式如下:
xkcd.png
。
r
和 random
代表隨機下載一則。
random.randint
、中文說明,
分隔的多個數字,代表下載多則。數字-數字
的範圍,代表下載多則。另外還有需要使用課外知識的 Bonus:
https://imgs.xkcd.com/comics/
網址後面的部分,扣除 .png
io.BytesIO
、image.show()
)。python xkcd.py 參數
指令操作。**
python xkcd.py help
印出相關的說明。(5/27 更新) 網站上有幾則漫畫具有互動性的設計,或是格式與一般的圖片不太一樣(例如 1350、1416、1608、1663、2198),不需要特別處理這些特例。
你只需要確保你所寫出的爬蟲可以下載多數漫畫的圖片就好,遇到無法下載的狀況時必須使用 error handling(顯示錯誤訊息告知使用者重新輸入),使程式不會直接 crash。我們批改的時候會從程式碼去判斷給分。
繳交表單:https://forms.gle/fLHzYZ9CvxdPussw5
你的作業應該只會有一個檔案 xkcd.py
。如果有需要安裝任何 bs4
、html5lib
、requests
以外的套件,請在備註中說明(可以開放使用)。