python beautifulsoup: lxml html.parser
Я должен использовать BeautifulSoup, но я не знаю, какой парсер я должен взять. Я колеблюсь между lxml и html.parser, или почему не оба. Как узнать, соответствует ли веб-страница lxml? Как узнать, является ли веб-страница совместимой с html-парсером? Большое спасибо
2 ответа
Там нет серебряной пули. Различные HTML-парсеры ведут себя по-разному, и вы должны выбрать тот, который подходит для вашей конкретной страницы. Работает в этом случае в основном означает, что вы можете получить нужные данные.
lxml
парсер вообще быстрее, html5lib
наиболее мягкая - такая разница будет уместна, если у вас есть разбитый или плохо сформированный HTML для анализа. html.parser
встроен и может помочь избежать дополнительных зависимостей, если это проблема. Вот соответствующая таблица, которая подчеркивает различия.
Я усвоил это на собственном горьком опыте. Это убивает меня. Я просто не мог понять, почему тег, который я хотел, включал в себя что-то, чего не было в этом теге. Выяснилось, что синтаксический анализатор html некорректно работал с этим сайтом. После нескольких часов головной боли я вдруг попытался переключиться на парсер lxml, и о чудо... Ненужные вещи исчезли, как и должно было быть!