Лучшая библиотека для анализа HTML с помощью Python 3 и примера?
Я новичок в Python и использую Python 3.1 для Windows (pywin). Мне нужно проанализировать некоторые HTML, по существу дополнительные значения между конкретными тегами HTML и запутаться в моем наборе параметров, и все, что я нахожу, подходит для Python 2.x. Я читал рейвы о Beautiful Soup, HTML5Lib и lxml, но я не могу понять, как их установить в Windows.
Вопросы:
- Какой HTML-парсер вы порекомендуете?
- Как его установить? (Будьте нежны, я совершенно не знаком с Python и помню, что я на Windows)
-
Есть ли у вас простой пример того, как использовать рекомендованную библиотеку для улавливания HTML из определенного URL-адреса и вернуть значение из примерно следующего:
< div class= "foo" > < table < tr <td> foo </tr> </таблица > < a class= "ссылка" href= '/blahblah' > Ссылка </а > </DIV>
(скажем, мы хотим вернуть "/blahblah" )
Ответы
Ответ 1
Веб-скребок в Python 3 в настоящее время очень плохо поддерживается; все приличные библиотеки работают только с Python 2. Если вы должны очистить веб-страницы на Python, используйте Python 2.
Хотя рекомендуется Beautiful Soup (каждый вопрос, касающийся веб-скрепок с Python в Stack Overflow, подсказывает это), это не так хорошо для Python 3 как и для Python 2; Я даже не смог установить его, поскольку код установки был Python 2.
Что касается адекватных и простых в установке решений для Python 3, вы можете попробовать библиотечный HTML-парсер, хотя это довольно баребоны, с Python 3.
Ответ 2
Если ваш HTML хорошо сформирован, у вас есть много вариантов, например sax
и dom
. Если он плохо сформирован, вам нужен отказоустойчивый парсер, например Beautiful soup
, элемент tidy или lxml HTML-парсер. Никакой парсер не идеален, когда ему предъявляется множество разбитых HTML, иногда я должен попробовать больше, чем один. Lxml
и Elementree
используют наиболее совместимый api, который является более стандартным, чем Beautiful soup
.
По-моему, Lxml
- лучший модуль для работы с XML-документами, но ElementTree
, включенный в python, по-прежнему очень хорош. Раньше я использовал Beautiful soup
для преобразования HTML в xml и построения ElementTree
для обработки данных.
Ответ 3
BeautifulSoup, с его версией 3.1.0.1 (январь 2009) также работает с Python 3.x.
У меня нет прямого опыта с BeautifulSoup под Py3k (хотя это скоро должно измениться...). Однако я просто прочитал, что версия 3.1.0 Beautiful Soup значительно хуже в реальном мире HTML, чем в предыдущих версиях, поэтому я могу попытаться подождать, если это возможно (т.е. Остаться с Python 2.6 дольше).
Ответ 4
Я знаю, что это уже поздно, но для справок в будущем Beautiful Soup 4.3.2 доступен по состоянию на октябрь 2013 года.
http://www.crummy.com/software/BeautifulSoup/bs4/download/
Он совместим с Python 3.
Ответ 5
В настоящее время я использую lxml, а в Windows я использовал установочный двоичный файл из http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml.
import lxml.html
page = lxml.html.fromstring(...)
title = page.xpath('//head/title/text()')[0]