BeautifulSoup «исправляет» html в Windows 8, но не в OS X или Windows 7

0

BeautifulSoup дает мне разные результаты на разных платформах. Может ли кто-нибудь помочь мне понять, почему?

Создайте файл test.txt со следующим содержимым:

<S1>
</S1>

Когда я запускаю следующий сниппет

from bs4 import BeautifulSoup
with open("test.txt", 'r') as f:
    lines = f.read()
soup = BeautifulSoup(lines)
print soup

В Windows 7 и Mac OS X он дает результат:

<S1>
</S1>

Но в Windows 8 он превращает его в HTML-документ:

<html><head></head><body>
<S1>
</S1>
</body></html>

Я знаю, что BeautifulSoup попытается исправить неверный HTML, но почему результаты здесь разные? Почему он не всегда исправляет это?

Обратите внимание, что на всех трех платформах использовались те же версии Python и BeautifulSoup (2.7.5 и 4.1.3).

  • 0
    Однако он работает, как и ожидалось для меня на Windows 7 на BS4 '4.3.1' и Python 2.7.5
Теги:
macos
beautifulsoup
windows-8

1 ответ

1
Лучший ответ

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

От BeautifulSoup:

Если вы ничего не укажете, вы получите лучший парсер HTML, который установлен. Beautiful Soup оценивает lxmls parser как лучший, затем html5libs, а затем встроенный парсер Pythons.

  • 0
    Действительно, после установки html5lib в OS X моя система теперь использует этот анализатор по умолчанию (и добавляет теги), и я смог воспроизвести различия. Ранее я html.parser что если вы ничего не указали, по умолчанию всегда используется html.parser . Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню