Так вот в чем смысл, в Aptana 3 с pyDev я не получаю никаких исключений, все вроде бы нормально.
Но когда я пытаюсь запустить непосредственно в python, bucle останавливается в какой-то момент, я думаю, этоможет быть совпадением с каким-то специальным символом вроде - или чем-то подобным.
class Spider(HTMLParser):
def __init__(self, url):
HTMLParser.__init__(self)
string=[]
string2=[]
self.feed(urlopen(url).read()
def handle_starttag(self, tag, attrs):
if tag == 'a' and attrs:
title= attrs[1][1]
link= attrs[0][1]
string.append(title)
string2.append(link)
Я новичок в Python, поэтому я не могу получить более подробную информацию об исключениях, чем эта:
line 33, in __init__ self.feed(urlopen(url).read()) File "/usr/lib/python2.6/HTMLParser.py", line 108,
in feed self.goahead(0) File "/usr/lib/python2.6/HTMLParser.py", line 148,
in goahead k = self.parse_starttag(i) File "/usr/lib/python2.6/HTMLParser.py", line 252,
in parse_starttag attrvalue = self.unescape(attrvalue)'])
Выход из рейза: </p>
<pre><code> File "parse.py", line 65, in <module>
Spider("http://...")
File "parse.py", line 33, in __init__
self.feed(urlopen(url).read())
File "/usr/lib/python2.6/HTMLParser.py", line 108, in feed
self.goahead(0)
File "/usr/lib/python2.6/HTMLParser.py", line 148, in goahead
k = self.parse_starttag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 252, in parse_starttag
attrvalue = self.unescape(attrvalue)
File "/usr/lib/python2.6/HTMLParser.py", line 390, in unescape
return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
File "/usr/lib/python2.6/re.py", line 151, in sub
return _compile(pattern, 0).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
Теперь я могу пропустить ошибки, изменив это: </p>
<pre><code>self.feed(unicode(urlopen(url).read(),errors='replace'))
Но все еще уродливое решениеМне нужны акценты в тексте.Я попробовал </p>
<pre><code># -*- coding: latin-1 -*-
, но ничего не изменилось.