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