2016-05-14 3 views
2

Я пытаюсь очистить форму html с помощью robobrowser с помощью python 3.4. Я использую HTML по умолчанию парсер:Очистить форму на некорректной веб-странице

self._browser = RoboBrowser(history=True, parser="html.parser") 

Он отлично работает для правильных веб-страниц, но теперь я должен разобрать неправильно написанную страницу. Вот HTML фрагмент:

<form method="post" action="decide.php?act=submit_advance"> 
    <table class="td_advanced"> 
    <tr class="td_advance"> 
    <td colspan="4" class="td_advance"></strong><br></td> 
    <td colspan="3" class="td_left">Case sensitive:<br><br></td> 
    <td><input type="checkbox" name="case_sensitive" /><br><br></td> 
[...] 
</form> 

Закрытие strong тег неверен. Эта ошибка не позволяет считывателю прочитать все входы, следующие за этим неправильным тегом:

form = self._browser.get_form() 
print(form) 
>>> <RoboForm> 

Любые предложения?

+0

Если это ошибка в robobrowser, вы можете отправить вопрос на GitHub. https://github.com/jmcarp/robobrowser –

+0

Я думаю, что beautifulsoup должен обрабатывать суп с тегами, так что это будет возможность рассмотреть. –

ответ

0

Я нашел решение самостоятельно. Комментарий о beautifulsoup был полезен, и мой поиск был правильным.

Решение: использовать другой анализатор html. Я пробовал с lxml, и он работает для меня.

self._browser = RoboBrowser(history=True, parser="lxml") 

Как PyPI в настоящее время не имеет LXML инсталлятор работает с моим питоном версией, я скачал отсюда: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

Смежные вопросы