Подтвердить что ты не робот

Лучшая библиотека для анализа 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" )

4b9b3361

Ответ 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]