作者lintsu (我惠我惠)
看板Python
標題[心得] 用 Python 寫 PTT 發錢程式
時間Fri Mar 3 22:57:58 2017
小弟最近和朋友,因為都用 Mac。需要 Mac 也能用的 PTT 發錢程式
就只好自幹一個出來了。
先貼 GitHub:
https://github.com/wabilin/MumiGiveP
之前偶爾會在 leetcode 上用 Python 寫寫題目。
真正寫實用的程式還是第一次,如果看到哪裡不好也懇請指教。
[ 程式說明 ]
大概分兩個部分,
一是走 telnet 和 PTT 溝通,
二是從網頁上抓推文下來分析。
程式流程大概就是:
使用者輸入發錢設定 -> 從 PTT 網頁上抓下推文名單 -> 登入 PTT 自動發錢
說簡單其實還真的蠻簡單的,程式也不長。
[小心得]
Python 的 telnetlib 真的蠻傻瓜好用的,
之前還研究了 Telnet 的協定一陣子,
然後發現用這個函式庫可以寫蠻無腦的。
主要遇過問題是,怎麼處理 PTT 的編碼。
因為並不是單純的 Big5,所以 decode 會失敗。
最後還是靠 Google 找到別人寫好的。
另外一個問題是,PTT 的登入流程中,
會有很多不同的狀況,如果一個個寫分支或狀態機,
會很亂很麻煩。
最後想出了看起來沒什麼的解決方法,但又有點自覺巧妙
很意外的一點是,從 PTT 抓來的內容
在 Mac 用 iTerm 直接噴出來,辨識度居然還蠻高的
所以除錯也不難
在爬網頁方面的功能方面,
「requests」還蠻好用的,
然後為了降低相依性的麻煩,HTML Parser 直接用內建的,
用起來也還輕鬆愉快
篩選推文名單的功能,
因為 list comprehension 實在很好用,
所以意外快而短小的完成了!
( 本來還有點懶得做
最後要生成 Windows 執行檔的時候,
py2exe 包出來的,在 requests 的某些功能上會壞掉,
所以改用 PyInstaller,發現比 py2exe 更加無腦好用!
---- ---- ---- ----
最後一些還沒完成的事項:
不知道為什麼在 Windows 搞不定中文顯示,
所以目前輸出全用 ASCII。
還有一直不想加的 GUI,
同樣為了降低相依性,應該會用 Tk 作吧。
應該會有點土法煉鋼的感覺
還有一個蠻蠢的是,因為一直沒研究怎麼送方向鍵訊號
還沒有做登出XD
--
Sent from my Emacs-24
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.49.0
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1488553083.A.FA0.html
※ 編輯: lintsu (223.139.49.0), 03/03/2017 23:01:25
推 ckc1ark: 不考慮ssh嗎? 用telnet裸奔有點刺激吧 03/03 23:04
→ uranusjr: 方向鍵其實很簡單, 送 \x1b\x4fA (上, 下右左 BCD) 就好 03/03 23:20
推 ckc1ark: 是說q有些情況也可以當←來用 03/03 23:22
推 banyhong: 推一個 03/03 23:35
→ BigBank: 方向鍵可用tn.write(b'\x1b[A') 03/03 23:50
→ lintsu: 謝謝 SSH想說之後再弄 telnet簡單一點 03/04 08:30
推 timTan: 可以發新台幣嗎(誤) 03/04 09:41
→ lintsu: 好 我試看看 謝謝 03/04 12:54
推 ckc1ark: 登入的時候帳號加,可以用utf8模式 03/04 13:10
推 agogoman: 推 03/15 23:26