2010-07-14 2 views
3

Я использую BeautifulSoup, но, как я понимаю, библиотека больше не поддерживается. Итак, что я должен использовать? Я слышал про Xpath, но что еще там?Нет больше BeautifulSoup

+0

«Это зависит». Вы ищете XML-Parser или для анализатора real-world-html? –

+2

«Библиотека больше не поддерживается». Просьба представить доказательства этого утверждения. –

+0

Хорошо, один из моих коллег сказал мне, и этот человек, как правило, хорошо информирован. Но, видимо, не в этом случае –

ответ

13

Был bugfix release in April, так что я даже не знаю, где вы получите идею, что он больше не поддерживается. Однако, даже если бы это было так, BeautifulSoup по-прежнему много функционально, и я действительно не вижу, чтобы даже текущая реализация прерывалась в ближайшее время. У вас могут возникнуть проблемы с HTML 5 в ближайшие 2 года (хотя есть гораздо меньше причуд, поэтому, по крайней мере, до сих пор легче разбираться), но нет особых причин не использовать BeautifulSoup. Сообщество по-прежнему активно с поддержкой и т. Д. В группе google, и, очевидно, исходный код доступен для вас по мере необходимости.

+0

Прохладный .. большое спасибо :-) –

0

Ну, если вы не обязаны работать с python, вы всегда можете использовать парсер TagSoup. Это Java-библиотека, но она дает очень хорошие результаты. Вы также можете просто использовать Tidy для очистки ввода, прежде чем пытаться его проанализировать.

+0

Python - это все, что я знаю и изучаю на данный момент. –

6

Я бы держался подальше от lxml, его слишком суетливый для моего вкуса. Я бы попробовал html5lib, если бы был вами. Он не только анализирует html, но и надежно обрабатывает ошибки, которые вы видите в суп-теге, известный как недопустимый html.

Он даже имеет режим эмуляции BeautifulSoup, производя дерево разбора в красивой форме супа, чтобы облегчить перенос старого кода через:

import html5lib 
from html5lib import treebuilders 

f = open("mydocument.html") 
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup")) 
minidom_document = parser.parse(f) 
+0

Вы также пробовали lxml.html (вместо lxml.etree)? У меня были хорошие впечатления, даже с довольно плохим супом. Также обратите внимание, что вы также можете использовать парсер html5lib с lxml. – Steven

+0

Нет, у меня нет, но теперь я буду :) – fmark

+1

Я думаю, что буду придерживаться BeautifulSoup –

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