Восхитительный суп – это библиотека Python для извлечения информации из записей HTML и XML. Она работает с вашим предпочтительным парсером, чтобы дать неформальные методы для изучения, поиска и изменения дерева разбора. Она регулярно спасает инженеров-программистов от многочасовой или длительной работы.

Эти рекомендации представляют собой каждый значительный элемент Excellent Soup 4, с моделями. Я даю вам информацию о том, для чего эта библиотека полезна, как она работает, как ее использовать, как заставить ее делать то, что вам нужно, и что делать, когда она вредит вашим желаниям.

Модели, представленные в данной документации, должны работать по аналогичному маршруту на Питоне 2.7 и Питоне 3.2.

Возможно, вы ищете документацию для Lovely Soup 3. При условии, что это правда, Вы должны понимать, что Чудесный Суп 3 больше никогда не будет создан, и что Прекрасный Суп 4 предписывается для каждого нового предприятия. В том случае, если вам необходимо узнать о контрасте между Excellent Soup 3 и Wonderful Soup 4, см. код порта на BS4.

Эта документация была преобразована в различные диалекты клиентами Wonderful Soup:

这篇文档当然还有中文版.

このページは日本語で利用できます(外部リンク)

이 문서는 한국어 번역도 가능합니다. (외부 링크)

HTML-документ, который будет использоваться в качестве примера на протяжении всего документа. Это часть истории Алисы в стране чудес:

html_doc = “”

< html><head><title>История Дормауса</title></head>

<труп>

< p class=”title”><b>История Общаги</b></p>

< p class=”история”>С тех пор как появились три младшие сестры; и их имена были

< a href=”http://example.com/elsie” class=”сестра” id=”link1″>Elsie</a>,

< a href=”http://example.com/lacie” class=”сестра” id=”link2″> Lacie</a> and

< a href=”http://example.com/tillie” class=”сестра” id=”link3″>Tillie</a>;

и они жили на дне колодца.

< p class=”история”>…</p>

“””

Прогон документа “три сестры” через Beautiful Soup дает нам объект BeautifulSoup, который представляет документ как вложенную структуру данных:

от импорта bs4 BeautifulSoup

soup = BeautifulSoup(html_doc, ‘html.parser’)

print(soup.prettify())

< html>

# <глава>

# <заголовок>

# The Dormouse’s story

# </title>

# </head>

# <труп>

< p class=”title”>

#    < b>

# The Dormouse’s story

#    </b>

#   </p>

< p class=”история” >

# Давным-давно были три младшие сестры; и их имена были

< a class=”сестра” href=”http://example.com/elsie” id=”link1″ >

# Элси

#    </a>

#    ,

# a class=”сестра” href=”http://example.com/lacie” id=”link2″ >

# Lacie

#    </a>

# и

# a class=”сестра” href=”http://example.com/tillie” id=”link2″ >

# Тилли

#    </a>

# И они жили на дне колодца.

#   </p>

< p class=”история” >

#    …

#   </p>

# </body>

</html>

Вот несколько простых способов навигации по структуре данных:

название супа

# < title>The Dormouse’s story</title>

название супа

# u’title”

суповая строка

# u’The Dormouse’s story’ #

название супа.родительское.имя

# u’head”

суп-пюре

< p class=”title”><b>История Общаги</b></p>

суп.

# u’title”

суп.а

< a class=”сестра” href=”http://example.com/elsie” id=”link1″ >Elsie</a>

soup.find_all(‘a’)

# [< a class=”сестра” href=”http://example.com/elsie” id=”link1″>Elsie</a>,

< a class=”сестра” href=”http://example.com/lacie” id=”link2″> Lacie</a>,

# < a class=”сестра” href=”http://example.com/tillie” id=”link3″>Tillie</a>]]

soup.find(id=”link3″)

< a class=”сестра” href=”http://example.com/tillie” id=”link3″ >Tillie</a>

Одной из общих задач является извлечение всех URL, найденных в тегах <a> страницы:

для ссылки в soup.find_all(‘a’):

    print(link.get(‘href’)))

# http://example.com/elsie

# http://example.com/lacie

# http://example.com/tillie

Еще одной общей задачей является извлечение всего текста из страницы:

print(soup.get_text())

# The Dormouse’s story

#

# The Dormouse’s story

#

# Давным-давно были три младшие сестры; и их имена были

# Элси,

# Lacie and

# Тилли;

# и они жили на дне колодца. #

#

# …

Установка красивого супа

Если вы используете текущую форму Debian или Ubuntu Linux, вы можете представить восхитительный суп с системным менеджером пакетов:

$ в состоянии получить введение python-bs4 (для Python 2)

$ адепт получит введение python3-bs4 (для Python 3)

Wonderful Soup 4 распространяется через PyPi, поэтому в случае, если вы не можете представить его в системном пакетере, вы можете представить его с помощью easy_install или pip. Название пакета красивый суп4, и похожий пакет имеет дело с Python 2 и Python 3. Убедитесь, что вы используете правильную визуализацию pip или easy_install для вашей формы Python (они могут быть названы pip3 и easy_install3 отдельно в случае, если вы используете Python 3).

$ easy_install beautifulsoup4

$ pip introduction beautifulsoup4

(Пакет “Прекрасный суп” – это, скорее всего, не то, что вам нужно. Это прошлая значительная разрядка, Прекрасный Суп 3. Много программирования использует BS3, так что он пока доступен, но в случае, если вы сочиняете новый код, вы должны представить красивый суп4).

На случай, если у вас нет введенных easy_install или pip, вы можете скачать тарбол с исходным кодом Delightful Soup 4 и представить его с setup.py.

$ питон установка.пи представить

В качестве крайней меры, разрешение на Восхитительный суп позволяет вам связать всю библиотеку с вашей заявкой. Вы можете загрузить тарбол, дублировать его каталог bs4 в кодовую базу своего приложения и использовать Delightful Soup, не вводя его ни в коем случае.

Я использую Python 2.7 и Python 3.2 для создания Восхитительного Супа, но он должен работать с другими текущими формами.

Вопросы после создания

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

На случай, если вы получите ImportError “Нет модуля с именем HTMLParser”, вас беспокоит то, что вы запускаете адаптацию кода на Python 2 под Python 3.

В случае, если вы получаете ImportError “Нет модуля с именем html.parser”, вас беспокоит то, что вы запускаете форму кода на Python 3 под Python 2.

В этих двух случаях самым надежным вариантом будет полное исключение заведения “Прекрасный суп” из вашей системы (подсчет любого индекса, сделанного при расстегнутом тарболе) и повторная попытка заведения.

Если при удержании ROOT_TAG_NAME = u'[документ]’ вы получаете синтаксическую ошибку “Неверная структура предложения”, то вам необходимо сменить код на Python 2 на Python 3. Вы можете сделать это либо введя набор:

$ python3 setup.py introduc

или, опять же, физически запустив содержимое преобразования 2to3 на Python в реестре bs4:

$ 2to3-3.2 – w bs4