Pergunta

Estou criando um código que obtém urls de imagem de qualquer páginas da web, o código está em python e usar BeutifulSoup e httplib2. Quando eu executar o código, eu recebo o seguinte erro:

Look me http://movies.nytimes.com          (this line is printed by the code)
Traceback (most recent call last):
File "main.py", line 103, in <module>
visit(initialList,profundidad)
File "main.py", line 98, in visit
visit(dodo[indice], bottom -1)
File "main.py", line 94, in visit
getImages(w)
File "main.py", line 34, in getImages
iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1499, in __init__
BeautifulStoneSoup.__init__(self, *args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1230, in __init__
self._feed(isHTML=isHTML)
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 1263, in _feed
self.builder.feed(markup)
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 226, in parse_starttag
endpos = self.check_for_whole_start_tag(i)
File "/usr/lib/python2.6/HTMLParser.py", line 301, in check_for_whole_start_tag
self.error("malformed start tag")
File "/usr/lib/python2.6/HTMLParser.py", line 115, in error
raise HTMLParseError(message, self.getpos())
HTMLParser.HTMLParseError: malformed start tag, at line 942, column 118

Alguém pode me explicar como corrigir ou fazer uma exceção para o erro

Foi útil?

Solução

Para pegar esse erro especificamente, alterar o código para olhar como esta:

try:
    iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))

except HTMLParseError:
    #Do something intelligent here

Aqui está mais algumas leituras sobre tentativa de Python, exceto blocos: http://docs.python.org/tutorial/errors.html

Outras dicas

Você está usando a mais recente versão do BeautifulSoup
Este parece ser um problema conhecido da versão 3.1.x, porque ele começou a usar um novo analisador (HTMLParser, em vez de SGMLParser) que é muito pior no processamento de HTML malformado. Você pode encontrar mais informações sobre isso em BeautifulSoup website .
Como uma solução rápida, você pode simplesmente usar uma versão mais antiga ( 3.0.7a ).

Eu tenho esse erro quando eu tive a cadeia = & no meu documento HTML. Quando eu substituiu o string (no meu caso com = e ), então eu não recebeu esse erro de análise.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top