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).
Beautifulsoup всегда использует лучший доступный парсер, который вы установили. Я считаю, что у вас есть другой парсер, установленный в ваших окнах 8, по сравнению с двумя другими ОС.
От BeautifulSoup:
Если вы ничего не укажете, вы получите лучший парсер HTML, который установлен. Beautiful Soup оценивает lxmls parser как лучший, затем html5libs, а затем встроенный парсер Pythons.
html5lib
в OS X моя система теперь использует этот анализатор по умолчанию (и добавляет теги), и я смог воспроизвести различия. Ранее я html.parser
что если вы ничего не указали, по умолчанию всегда используется html.parser
. Спасибо!