看板 b97902HW 關於我們 聯絡資訊
這是遲來的教學囉 首先呢 這篇是以你已經學會基本的Python(判斷 迴圈等等)為前提 所以不會的 請看看助教的slides 或者左轉去 itsming 搜尋python 接下來就要說這次作業大概要怎麼做啦 請盡力把這個看懂 http://docs.python.org/dev/howto/regex.html 這是Python部分的regular expression的文件 基本上 能夠獨立看懂這種文件會對以後學新東西時有很大的幫助 廢話完畢 ------ 作業的話 程式的內容大概可以分成三步驟 1.抓回網頁 2.分析網頁 3.把圖打包回家 關於第一項 TA的example已經做完啦 所以也沒啥好說 第二項就需要用到regular expression囉 除非你想慢慢刻出一個用來parse出圖片網址的 程式 所以regular expression是甚麼呢 基本上就是一組用來表示字串的"pattern"的方式 例如 要找 "以123結尾的字串" 或者是 "aa開頭bb結尾" 的字串 我們可以用 "*123" 和 "aa*bb" 來表示這兩種情況 所以 當然也可以用來找我們這次所需要的圖片的網址 基本表示法的話 這裡有說明 http://en.wikipedia.org/wiki/Regular_expression 快速教學的話就看這裡吧 在python裡面 被保留的符號有 ^ $ * + ? { [ ] \ | ( ) 代表任意一個字元 在某些設定情況下似乎也可以代表\n 不過我沒用過 ? 代表零或一個任意字元 (也就是這裡的字元可有可無的意思) * 代表零至無限多個任意字元 + 代表一至無限多個任意字元 ^ 行首 或者輸入的字串頭 $ 行尾 或者輸入的字串尾 \ 脫逸字元 [] 符合[]裡面敘述的單一字元 例如[a-z]就是a-z (小寫) [a-zA-z0-9]就是所有 英數字元 () subexpression 我也不太會解釋 而且我只會用下面這種XD (abc|bca|bbb) 代表只有三種字串可以符合這種條件 abc bca 和 bbb {} 代表前面的一個block可以重複幾次 例如 a{2,4} 代表著以下字串符合這個式子 aa aaa aaaa 而(as){3,5} 代表有下面三種情況符合這個式子 asasas asasasas asasasasas 打的時候要注意 如果你想要用到保留字元的話 要用\脫逸 例如我想要找出所有開頭是 www.google.com 結尾是/的字串 那就必須要打 www\.google\.com*/ 把.脫逸 否則可能連這種東西都會過 wwwwgoogleecoma/ 然後還有 在python裡面打標準表示法的時候要注意escape的問題 例如你想要表示剛剛的那個式子 www\.google\.com*/ 那麼 必須把\再脫逸一次 (因為\在python讀入時也會視為脫逸字元) 就會變成這樣 exp = "www\\.google\\.com*/" 所以python讀的時候會把\\脫逸成\ 存在記憶體裡面的東西就長這樣了 www\.google\.com*/ 所以呢 我們要表示的是圖片的網址 請自己隨便去找個相簿 把隨便一個圖片的網址找出來 像這樣 http://jimmyken793.pixnet.net/album/set/1884780 這個相簿(很久以前的點軍塗鴉= =) 就用第一張圖吧 原始碼部分是 <a href="http://jimmyken793.pixnet.net/album/photo/61089342"> <img id="thumb61089342" src="http://p1.p.pixnet.net/albums/userpics/1/7/286717/thumb_1186276285.png" class="thumb" width="90" /> </a> 所以網址是 http://p1.p.pixnet.net/albums/userpics/1/7/286717/thumb_1186276285.png
那基本上數字部分都可以替換 其他的 自己寫吧XDD 還有助教的code裡面有一個下載檔案的函式 請多多利用 檔名就從網址裡面用redular expression擷取就OK了 加油吧各位 -- ※ 發信站: 批踢踢兔(ptt2.cc) ◆ From: 118.166.112.71
weijer0905:先推一個XD推 11/16 00:44
dennis2030:先推一個 今天研究好久還是沒頭緒Q口Q推 11/16 00:48
dennis2030:想法都有 卡在語法跟函式...超幹 = =推 11/16 00:48
weijer0905:恩嗯 都不會寫XD推 11/16 00:50
wooffood:看到這篇才熊熊想起有這個作業= ="推 11/16 18:36
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.112.71 ※ 編輯: jimmyken793 來自: 118.166.112.71 (11/16 19:24)
jimmyken793:第一次寫這種東西 有不足的歡迎提問 11/16 19:24
jimmyken793:或者是我腦殘也請指正XD 11/16 19:25
※ 編輯: jimmyken793 來自: 118.166.112.71 (11/16 19:26)
justin760204:大感謝 T.T 11/16 19:28
ming1053:其實()括起來的部份就是re.findall()之類的會取的部份 11/16 19:38
dennis2030:看完吉米肯的文章後 考試都考一百分了呢! 11/16 20:41
benck:所以樓上100了!?? 11/16 21:01