$ python3 utf8.py
/usr/bin/torsocks /usr/bin/wget -q -O - --user-agent="Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20
100101 Firefox/17.0" http://xiwayy2kn32bo3ko.onion/test/read.cgi/tor/1371355627/978n
Traceback (most recent call last):
File "utf8.py", line 13, in <module>
data = subprocess.getoutput( cmd )
File "/usr/lib/python3.3/subprocess.py", line 707, in getoutput
return getstatusoutput(cmd)[1]
File "/usr/lib/python3.3/subprocess.py", line 683, in getstatusoutput
text = pipe.read()
File "/usr/lib/python3.3/codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 1674: invalid start byte
我迁移到python3,专门用于解析国际互联网,中文页面等。但我遇到了这个麻烦。
我的简单代码是 wget 周围的 python 包装器,因为它是我认为最简单的避开禁令的方法。
$ cat utf8.py
#!/usr/bin/python3
import subprocess
from bs4 import BeautifulSoup
url = 'http://xiwayy2kn32bo3ko.onion/test/read.cgi/tor/1371355627/978n'
user_agent = "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0"
wget_cmd = '/usr/bin/wget -q -O - --user-agent="' + user_agent + '" '
torsocks_cmd = '/usr/bin/torsocks '
cmd = torsocks_cmd + wget_cmd + url
print( cmd )
data = subprocess.getoutput( cmd )
print( "Fetch complete" )
print( data )
http://xiwayy2kn32bo3ko.onion/test/read.cgi/tor/1371355627/978n
举个例子,它是洋葱网。
为什么 python3.3 的 codecs.py 不理解所有存在的东西?
子进程崩溃,没有任何机会恢复获取的数据。
是否有通用的国际方法来获取和解析任何语言的 html 页面?我确信 utf-8 是为此任务开发的。
目标页面是:Shift_JIS 编码
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
我的主要问题是:应该如何普遍地对任何编码、任何语言进行处理。哪种语言更好地完成这项任务,应该如何解析 html?
我应该使用什么工具来完成这项任务?