python beautifulsoup: lxml html.parser

Я должен использовать BeautifulSoup, но я не знаю, какой парсер я должен взять. Я колеблюсь между lxml и html.parser, или почему не оба. Как узнать, соответствует ли веб-страница lxml? Как узнать, является ли веб-страница совместимой с html-парсером? Большое спасибо

2 ответа

Решение

Там нет серебряной пули. Различные HTML-парсеры ведут себя по-разному, и вы должны выбрать тот, который подходит для вашей конкретной страницы. Работает в этом случае в основном означает, что вы можете получить нужные данные.

lxml парсер вообще быстрее, html5lib наиболее мягкая - такая разница будет уместна, если у вас есть разбитый или плохо сформированный HTML для анализа. html.parser встроен и может помочь избежать дополнительных зависимостей, если это проблема. Вот соответствующая таблица, которая подчеркивает различия.

Я усвоил это на собственном горьком опыте. Это убивает меня. Я просто не мог понять, почему тег, который я хотел, включал в себя что-то, чего не было в этом теге. Выяснилось, что синтаксический анализатор html некорректно работал с этим сайтом. После нескольких часов головной боли я вдруг попытался переключиться на парсер lxml, и о чудо... Ненужные вещи исчезли, как и должно было быть!

Другие вопросы по тегам