как исправить или сделать исключение для этой ошибки

StackOverflow https://stackoverflow.com/questions/1100029

  •  11-09-2019
  •  | 
  •  

Вопрос

Я создаю код, который получает URL-адреса изображений с любых веб-страниц, код написан на python и использует BeutifulSoup и httplib2.Когда я запускаю код, я получаю следующую ошибку:

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

Кто-нибудь может объяснить мне, как исправить или исключить ошибку

Это было полезно?

Решение

Чтобы конкретно отловить эту ошибку, измените свой код так, чтобы он выглядел следующим образом:

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

except HTMLParseError:
    #Do something intelligent here

Вот еще кое-что о Python's try, кроме блоков:http://docs.python.org/tutorial/errors.html

Другие советы

Используете ли вы последнюю версию BeautifulSoup?
Похоже, это известная проблема версии 3.1.x, потому что в ней начал использоваться новый синтаксический анализатор (HTMLParser вместо SGMLParser), который намного хуже обрабатывает искаженный HTML.Вы можете найти более подробную информацию об этом на Сайт BeautifulSoup.
В качестве быстрого решения вы можете просто использовать более старую версию (3.0.7а).

Я получил эту ошибку, когда у меня была строка =& в моем HTML-документе.Когда я заменил эту строку (в моем случае на ) затем я больше не получал эту ошибку синтаксического анализа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top