Лучшая библиотека для анализа HTML с помощью Python 3 и примера?

Я полностью новичок в Python и использую Python 3.1 в Windows (pywin). Мне нужно проанализировать некоторый HTML, по существу, дополнительные значения между конкретными тегами HTML, и я запутался в моем наборе параметров, и все, что я нахожу, подходит для Python 2.x. Я читал восторженные отзывы о Beautiful Soup, HTML5Lib и lxml, но не могу понять, как их установить в Windows.

Вопросы:

  1. Какой парсер HTML вы порекомендуете?
  2. Как мне его установить? (Будьте осторожны, я совершенно новичок в Python и помните, что я на Windows)
  3. У вас есть простой пример того, как использовать рекомендуемую библиотеку, чтобы получить HTML-код с определенного URL-адреса и вернуть значение, скажем, примерно так:

    ‹div class="foo"›‹table›‹tr›‹td›foo‹/td›‹/tr›‹/table›‹a class="link" href='/blahblah'›Link‹/a›‹ /дел›

(скажем, мы хотим вернуть "/blahblah")


person TMC    schedule 24.03.2010    source источник


Ответы (6)


Веб-скрапинг в Python 3 в настоящее время очень плохо поддерживается; все достойные библиотеки работают только с Python 2. Если вам нужно парсить веб-страницы на Python, используйте Python 2.

Хотя Beautiful Soup часто рекомендуется (каждый вопрос, касающийся парсинга веб-страниц с помощью Python в Stack Overflow, предполагает это) , это не так хорошо для Python 3, как для Python 2; Я даже не мог установить его, так как код установки все еще был Python 2.

Что касается адекватных и простых в установке решений для Python 3, вы можете попробовать библиотеку Парсер HTML, хотя и довольно простой, он поставляется с Python 3.

person Humphrey Bogart    schedule 29.06.2010
comment
Любая идея, как использовать встроенный анализатор HTML для доступа к содержимому тегов? - person Teifion; 09.11.2010
comment
У Beautiful Soup есть хорошие отзывы о текущем статусе. crummy.com/software/BeautifulSoup/3.1-problems.html - person dyork; 05.07.2011

Если ваш HTML правильно сформирован, у вас есть много вариантов, таких как sax и dom. Если он неправильно сформирован, вам нужен отказоустойчивый анализатор, такой как Beautiful soup, элемент tidy или анализатор HTML lxml. Ни один синтаксический анализатор не идеален, когда представлено множество сломанных HTML, иногда мне приходится пробовать более одного. Lxml и Elementree используют в основном совместимый API, который является более стандартным, чем Beautiful soup.

На мой взгляд, lxml — лучший модуль для работы с xml-документами, но ElementTree, входящий в состав python, все же довольно хорош. Раньше я использовал Beautiful soup для преобразования HTML в xml и конструировал ElementTree для обработки данных.

person mikerobi    schedule 24.03.2010

BeautifulSoup с версией 3.1.0.1 (январь 2009 г.) также работа с Python 3.x.

У меня нет прямого опыта работы с BeautifulSoup под Py3k (хотя это скоро должно измениться...). Однако я только что прочитал, что Версия Beautiful Soup 3.1.0 значительно хуже работает в реальных условиях. -world HTML, чем его предыдущие версии, так что я могу попытаться подождать, если это возможно (т.е. остаться с Python 2.6 немного дольше).

person mjv    schedule 24.03.2010

В настоящее время я использую lxml, а в Windows я использовал установочный двоичный файл из http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml.

import lxml.html
page = lxml.html.fromstring(...)
title = page.xpath('//head/title/text()')[0]
person Márcio    schedule 17.11.2011

Я знаю, что это уже поздно, но для дальнейшего использования Beautiful Soup 4.3.2 доступен с октября 2013 года.

http://www.crummy.com/software/BeautifulSoup/bs4/download/

Он совместим с Python 3.

person crunk1    schedule 10.12.2013

вы можете попробовать beautifulsoup4, который совместим как с python2, так и с python3, вы можете легко использовать его,

from bs4 import BeautifulSoup
soup = BeautifulSoup("<p>Some<b>bad<i>HTML")
person xiaojueguan    schedule 15.12.2020