Re: [心得] PTT Library

作者: jay20210 (騎掃把的柴犬0_0)   2018-12-07 16:37:28
最近在練習用python爬ptt
servey到這個library有使用paramiko作加密連線的部分覺得很不錯
只是在安裝上碰到了一些問題,卡了好幾關= =
小弟的環境是windows 10 + python 2.7.15
我用python -m pip install PTTLibrary指令安裝完後
執行import PTTLibrary
竟然出現ImportError: No module named PTTLibrary
看您寫的Library的相依性不算太複雜
就直接拉出來放在同個資料夾import
沒想到接下來遇到的是檔案本身編碼的問題....
但是還好您的檔案不多,只要在每一個檔案前面加上一行
# -*- coding: utf-8 -*-
就過這關了
還要把您在PTT.py下面這幾行import的部分修掉有from .的部份
因為我是拉到同一個資料夾底下執行的所以這部分改掉即可
try:
from . import Util
from . import Version
from . import ErrorCode
from . import Informationexcept
SystemError:
import Util
import Version
import ErrorCode
import Information
我嘗試執行的程式碼僅僅只有您在github上面的幾行
import PTT
ID = '*******'
Password = '*******'
PTTBot = PTT.Library()
ErrCode = PTTBot.login(ID, Password)
if ErrCode != PTT.ErrorCode.Success:
PTTBot.Log('登入失敗')
quit()
接下來碰到uao這個library解碼的問題
執行到這邊
[12-07 15:40:19][資訊] 偵測到前景執行使用編碼: cp950
[12-07 15:40:19][資訊] 產生 SSH 金鑰完成
[12-07 15:40:19][資訊] 使用者帳號: ********
[12-07 15:40:19][資訊] 密碼: ********
[12-07 15:40:19][資訊] 連線頻道 0 啟動
[12-07 15:40:19][資訊] 頻道 0 建立互動通道成功
Traceback (most recent call last):
File "ptt_lib.py", line 8, in <module>
ErrCode = PTTBot.login(ID, Password)
File "C:\Users\d\Desktop\ptt-overtor\PTT.py", line 754, in login
ErrCode = self.__connectRemote(0)
File "C:\Users\d\Desktop\ptt-overtor\PTT.py", line 667, in __connectRemote
ErrCode, CatchIndex = self.__operatePTT(ConnectIndex, SendMessage=SendMessage, Refresh=Refresh)
File "C:\Users\d\Desktop\ptt-overtor\PTT.py", line 411, in __operatePTT
self.__ReceiveRawData[ConnectIndex], Len = uao.decode(self.__ReceiveData[ConnectIndex])
File "C:\Python27\lib\site-packages\uao\__init__.py", line 45, in decode
result = u"".join(self._decode(input, errors))
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa1 in position 0: invalid start byte
於是去看了411行發現您有嘗試幾行Code有用註解留下
本來是這行
self.__ReceiveRawData[ConnectIndex], Len = uao.decode(self.__ReceiveData[ConnectIndex])
但我把他註解掉改用這行
self.__ReceiveRawData[ConnectIndex] = self.__ReceiveData[ConnectIndex]
程式終於沒有跳出exception
工程師最不想碰到的問題發生了
就是沒有跳出excption但是程式還是無法順利運作!!
不斷的出現這幾行LOG
[12-07 15:48:17][資訊] 連線頻道 0 啟動
[12-07 15:48:17][資訊] 頻道 0 建立互動通道成功
[12-07 15:48:17][資訊] 頻道 0 讀取 PTT 畫面..
[12-07 15:48:28][資訊] 超時斷線,重新連線
我想可能跟paramiko建立連線的方式有關
小弟還在慢慢研究paramiko與PTTLibrary
不知道各位前輩或作者能夠指點迷津
※ 引述《CodingMan ()》之銘言:
: PTT Library 0.6.0 更新
: 支援 SSH 連線
: 新增水球的支援,可丟接水球
: 新增刪除文章
: 新增修改密碼
: 這次更新很開心地支援了 SSH 連線,
: 再也不用裸奔了,
: 也因為 SSH 連線取得的畫面從 big5 變成 utf8,
: 分析畫面的方式都不一樣了,
: 把心一橫結果就是兩千多行程式碼重寫。
: 這次比較特別的是,加強支援了水球方面的支援,
: 並且實現了即時的文章抓取 api,以往過去使用網頁來抓取文章
: 會造成推文不即時的情況,
: 這次實現了直接登入 ptt 一頁一頁的解析文章內文與推文。
: CodingMan
: https://github.com/Truth0906/PTTLibrary
作者: s860134 (s860134)   2018-12-07 19:41:00
問題一單純就你的 python 有兩個 裝錯了
作者: st1009 (前端攻城師)   2018-12-07 23:54:00
基本上我覺得應該要用python3以上跑比較好,你編碼問題就是因為python2不支援中文,但3就可以了
作者: CodingMan (程式俠)   2018-12-08 00:35:00
大哥 你是不是本來是要回信啊?我在github有寫 python3 呀QQ
作者: TitanEric (泰坦)   2018-12-08 00:48:00
用python 3吧 對unicode支援好多了
作者: jay20210 (騎掃把的柴犬0_0)   2018-12-08 17:43:00
原來是小弟沒看清楚doc T___T

Links booklink

Contact Us: admin [ a t ] ucptt.com