Восхитительный суп – это библиотека 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