Как заставить HTMLParser продолжать синтаксический анализ после ошибки разбора? - PullRequest
1 голос
/ 20 апреля 2011

Я создаю веб-сканер и использую модуль HTMLParser для анализа ссылок из HTML-документа.Если синтаксический анализатор сталкивается с неправильной разметкой, он вызывает ошибку синтаксического анализа и завершает приложение.Поскольку сканер пересекает всю сеть, эта ошибка возникает довольно часто.

В разделе ошибок python.org кто-то уже поднимал эту проблему.Вы можете посмотреть на это здесь .Проблема в том, что я не знаю, как использовать предоставленный «патч», и не понимаю комментарии.

Я хочу переопределить поведение по умолчанию модуля HTMLParser, чтобы онпродолжить разбор после ошибки разбора.

Ответы [ 3 ]

1 голос
/ 20 апреля 2011

Сам я не использую HTMLParser, но не могли бы вы просто поместить свое утверждение в блок try / Кроме?

1 голос
/ 20 апреля 2011

Вы должны использовать BeautifulSoup вместо HTMLParser. BeautifulSoup намного надежнее.

Прекрасный суп не захлебнется, если вы дадите ему плохую разметку. Это дает дерево разбора, которое имеет примерно такой же смысл, как и ваш исходный документ. Обычно этого достаточно, чтобы собрать нужные данные и убежать.

0 голосов
/ 11 января 2012

Существуют определенные блоги и страницы, которые не хотят, чтобы их страницы сканировались и анализировались с помощью ботов и программ синтаксического анализа.Они хотят, чтобы многие синтаксические анализаторы выдавали ошибки.

Много раз это записывается в коде веб-страницы как

document.write('<sci'+<pt'...)

таким образом, через JavaScript, пользователи пытаются вставить код, но когдаанализируется весь фид, парсер выдает ошибку, сообщающую, что «обнаружен плохой тег», и он останавливается.

Лучший способ решить эту проблему - перед синтаксическим анализом просто удалить весь код JavaScript, если выпросто нужен контент, и вы будете работать просто отлично :)

...