[閒聊] telnet 抓取資料
原本以為說telnet抓取資料是很簡單的事情
畢竟寫過telnet瀏覽器 自己去剖析控制碼
什麼控制碼會有什麼行為.顯示.出現位置等等等控制
基本上是都實做過
對telnet的動作和行為應該還算了解
(但不算深入有些控制碼還沒完全搞懂,但因為瀏覽ptt大致都正常懶得細究)
想說最近看到node-webkit 打算用js寫一個視窗軟體
做類似下面這兩款的事情
https://play.google.com/store/apps/details?id=com.bbs.reader&hl=zh_TW
https://play.google.com/store/apps/details?id=mong.moptt&hl=zh_TW
學點新東西 練練功一下
結果一開始就被node.js的非同步行為搞得很頭大 這中間有很多處理的問題還在摸索
用了一些很不好硬幹的方式 總算是把我的最愛撈取出來 一撈取出來一看
怎麼有些版名會掉字? 一考就下去才發現 原來上一頁中出現同樣的英文字母
再下一頁中可能為了省資料傳送量 所以到下一頁的時候 不會再重傳
好比說同樣的位置 我的最愛中有一個是Android
下一頁我的最愛分頁是 ASM 結果因為那個 "A"字母在同一個地方有出現過
只會送出 SM ( A沒送....) 結果我在PASER字串抓資料時 只抓到SM....
意思是說如果要正確抓我的最愛 需要模擬出一個不須真正印出來的console畫面
以畫面文字對應排列為基礎 去擷取資料
有些時候不能用直接邊抓資料編paser資料的方式去抓
然後怎麼抓資料 也不太有頭緒 目前是用類似有限狀態機的方式
搭配在某些規則去剖析資料 但是感覺真的是不太好的方法
總之不知道這邊有沒有人有相關經驗 知道比較有效率抓telnet資料的方式?
能分享一些心得之類的 還以為很簡單.... 結果竟然是這麼麻煩的問題....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.70.105.149
推
01/02 23:14, , 1F
01/02 23:14, 1F
→
01/02 23:14, , 2F
01/02 23:14, 2F
zterm是telnet瀏覽器喔...跟我要的把特定站台一些資料抓取下來的目的不太一樣
※ 編輯: erspicu 來自: 61.70.105.149 (01/02 23:17)
推
01/02 23:18, , 3F
01/02 23:18, 3F
→
01/02 23:20, , 4F
01/02 23:20, 4F
以前就幹過了
http://dl.dropboxusercontent.com/u/61164954/homepage/samplebbs/index.htm
現在的重點不是如何寫TELNET瀏覽器 是如何把TELNET上的資料抓下來
特別是用NODE.JS有許多非同步行為
目前還在摸索比較好的方式 是上問看看有沒有人有相關經驗 參考一下做法
※ 編輯: erspicu 來自: 61.70.105.149 (01/02 23:25)
→
01/02 23:22, , 5F
01/02 23:22, 5F
推
01/03 00:06, , 6F
01/03 00:06, 6F
以前就寫過telnet瀏覽器 ptt瀏覽大概都正常 你覺得我不了解protocol??
是控制碼很多 有些用不到 沒k得很完全而已
推
01/03 00:06, , 7F
01/03 00:06, 7F
→
01/03 00:07, , 8F
01/03 00:07, 8F
→
01/03 00:08, , 9F
01/03 00:08, 9F
→
01/03 00:08, , 10F
01/03 00:08, 10F
感覺樓上應該是有實際處理經驗 我的感覺是 只能說抓TELNET資料
真的沒比寫telnet瀏覽器簡單阿...很多處理的菱菱角角還在摸
※ 編輯: erspicu 來自: 61.70.105.149 (01/03 00:15)
→
01/03 00:20, , 11F
01/03 00:20, 11F
parse資料跟parse控制碼還滿不一樣的耶...
→
01/03 00:22, , 12F
01/03 00:22, 12F
※ 編輯: erspicu 來自: 61.70.105.149 (01/03 00:57)
推
01/03 01:36, , 13F
01/03 01:36, 13F
→
01/03 07:22, , 14F
01/03 07:22, 14F
→
01/03 07:22, , 15F
01/03 07:22, 15F
→
01/03 07:25, , 16F
01/03 07:25, 16F
→
01/03 07:26, , 17F
01/03 07:26, 17F
我很確定你對這問題的理解在狀況外 parsing控制碼 跟 parsing資料
根本不一樣的事情 要parsing控制碼 靠我以前自己寫的TELNET瀏覽器
https://github.com/erspicu/telnet_sample/blob/master/telnet_sample/telnet.cs
就可以parsing 我幹嘛還要抄別人的?
先搞清楚moptt跟bbsreader這類軟體跟telnet瀏覽器軟體的差異吧
"具體作法可能像是leicheong大所說" <-- 這句話,你真的懂什麼是leicheong大所說??
而且他說的東西我上面是也大概有提到過
※ 編輯: erspicu 來自: 61.70.105.149 (01/03 08:42)
→
01/03 09:08, , 18F
01/03 09:08, 18F
恩 下載文章的處理方式 的確可以參考 但是隨著狀況不同 要擷取什麼資料
似乎只能見機行事 case by case 只是這中間會想聽聽相關處理經驗的人心得分享
→
01/03 09:10, , 19F
01/03 09:10, 19F
yes parsing控制碼 跟 parsing資料 本來就兩回事情 總算還有人知道我在說啥
→
01/03 09:10, , 20F
01/03 09:10, 20F
※ 編輯: erspicu 來自: 60.248.56.181 (01/03 09:42)
推
01/03 10:38, , 21F
01/03 10:38, 21F
→
01/03 10:39, , 22F
01/03 10:39, 22F
→
01/03 10:39, , 23F
01/03 10:39, 23F
大概方向 是這樣沒錯 只是實作細節跟程式規劃中間很多菱角 要想想
還真佩服像是MOPTT和BBSREADER作者...原本覺得這種程式不會太複雜
功真的不少...
※ 編輯: erspicu 來自: 60.248.56.181 (01/03 10:44)
→
01/03 13:18, , 24F
01/03 13:18, 24F
→
01/03 13:19, , 25F
01/03 13:19, 25F
→
01/03 13:19, , 26F
01/03 13:19, 26F
→
01/03 13:19, , 27F
01/03 13:19, 27F
→
01/03 13:19, , 28F
01/03 13:19, 28F
→
01/03 13:21, , 29F
01/03 13:21, 29F
→
01/03 13:21, , 30F
01/03 13:21, 30F
→
01/03 13:21, , 31F
01/03 13:21, 31F
→
01/03 13:22, , 32F
01/03 13:22, 32F
→
01/03 13:22, , 33F
01/03 13:22, 33F
→
01/03 13:22, , 34F
01/03 13:22, 34F
→
01/03 13:22, , 35F
01/03 13:22, 35F
→
01/03 13:24, , 36F
01/03 13:24, 36F
→
01/03 13:24, , 37F
01/03 13:24, 37F
→
01/03 13:24, , 38F
01/03 13:24, 38F
→
01/03 13:25, , 39F
01/03 13:25, 39F
→
01/03 13:26, , 40F
01/03 13:26, 40F
→
01/03 13:26, , 41F
01/03 13:26, 41F
之前雖然是自己處理控制碼 但是是直接借用c#的console來當screen
而現在等於是自己要處理和實作screen容器 來讀buffer 覺得很麻煩
但是似乎是一定的必要步驟了 等於在擷取比對所要的內容
使用的screen pattern來分析就是 ok...
※ 編輯: erspicu 來自: 60.248.56.181 (01/03 16:28)
推
01/03 18:40, , 42F
01/03 18:40, 42F
→
01/03 18:40, , 43F
01/03 18:40, 43F
→
01/03 19:27, , 44F
01/03 19:27, 44F
→
01/03 19:27, , 45F
01/03 19:27, 45F
→
01/03 19:30, , 46F
01/03 19:30, 46F
→
01/03 19:31, , 47F
01/03 19:31, 47F
→
01/03 19:31, , 48F
01/03 19:31, 48F
→
01/03 19:32, , 49F
01/03 19:32, 49F
→
01/03 19:44, , 50F
01/03 19:44, 50F
→
01/03 19:45, , 51F
01/03 19:45, 51F
→
01/03 19:46, , 52F
01/03 19:46, 52F
→
01/03 19:46, , 53F
01/03 19:46, 53F
→
01/03 19:46, , 54F
01/03 19:46, 54F
推
01/03 22:34, , 55F
01/03 22:34, 55F
→
01/03 22:36, , 56F
01/03 22:36, 56F
→
01/03 22:37, , 57F
01/03 22:37, 57F
推
01/04 02:47, , 58F
01/04 02:47, 58F
你還在狀況外嗎?
※ 編輯: erspicu 來自: 61.70.105.149 (01/04 10:51)
推
01/04 23:38, , 59F
01/04 23:38, 59F
→
01/04 23:39, , 60F
01/04 23:39, 60F
→
01/09 21:45, , 61F
01/09 21:45, 61F
→
01/09 21:45, , 62F
01/09 21:45, 62F
沒關係 你應該也看不太懂這討論串在說啥 狀況外
其實如果你還沒有能力理解這篇的話 是可以選擇先沉默的
也許先等你有辦法跟我一樣直接自己寫一個TELNET瀏覽器後
你就會看懂這篇在問啥了
※ 編輯: erspicu 來自: 61.70.105.149 (01/14 23:41)