comment fixer ou faire une exception pour cette erreur
-
11-09-2019 - |
Question
Je crée un code qui obtient les urls d'image à partir de toutes les pages Web, le code sont en python et utiliser BeutifulSoup et httplib2. Quand je lance le code, je reçois l'erreur suivante:
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
Quelqu'un peut me expliquer comment réparer ou faire une exeption de l'erreur
La solution
Pour rattraper cette erreur spécifique, changer votre code pour ressembler à ceci:
try:
iSoupList = BeautifulSoup(response, parseOnlyThese=SoupStrainer('img'))
except HTMLParseError:
#Do something intelligent here
Voici un peu plus sur la lecture de l'essai Python sauf blocs: http://docs.python.org/tutorial/errors.html
Autres conseils
Utilisez-vous dernière version de BeautifulSoup?
Cela semble un problème connu de la version 3.1.x, parce qu'il a commencé à utiliser un nouvel analyseur (HTMLParser, au lieu de SGMLParser) qui est bien pire au traitement HTML malformé. Vous pouvez trouver plus d'informations à ce sujet sur BeautifulSoup site .
En tant que solution rapide, vous pouvez simplement utiliser une version plus ancienne ( 3.0.7a ).
je suis arrivé cette erreur quand j'avais la chaîne dans mon document HTML = & . Lorsque je l'ai remplacé cette chaîne (dans mon cas avec = et ), alors je ne reçu que l'analyse syntaxique erreur.