Шпаргалка Beautiful Soup 4
Ниже приведена краткая шпрагалка по работе с Beatutiful Soup 4.
В текущей реализации код опробован на Beautiful Soup версии 4.9, но т.к. основные команды базовые, то большинство из них исправно работает в более старых и новых версиях. Если мне известны, особенности работы комманды в других версиях, об этом будет указано в сноске
*.
Базовый html к которому выполняются запросы взят из официальной документации Beautiful Soup 4 (opens new window)
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
| Описание | Код Python | Результат выполнения команды |
|---|---|---|
| Установка и создание базового объекта BeautifulSoup | ||
| Установка BS4 | | |
| Установка парсера html('html.parser') | | Не такой быстрый как lxml, менее точный чем html5lib |
| Установка парсера lxml ('lxml') (рекомендуемый как самый быстрый) | | Очень быстрый, достаточно точный, но является зависимым от внешней C библиотеки. |
| Установка парсера html5lib ('html5lib') | | Очень медленный но самый точный. Зависит от внешней библиотеки на Python |
| Создание объекта soup из строки html_string, для дальнейшей работы с html | | |
| Создание объекта soup из файла index.html для дальнейшей работы | | |
| Вывести html в читабельном виде | | |
| Навигация | ||
| Поулчить значение из тега head | | <head><title>The Dormouse's story</title></head> |
| Получить значение теэга тега b внутри body | | <b>The Dormouse's story</b> |
| Получить первый встреченный элемент с тэгом <a> | | <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a> |
| Получить список всех элементов с тэгом <a> | | [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] |
| Поулчить список всех дочерних элементов внутри тэга <head> | | [<title>The Dormouse's story</title>] |
| Итерироваться по всем дочерним элементам внутри title_tag | | <title>The Dormouse's story</title> |
| Перебрать все элементы title_tag рекурсивно, заходя внутрь. | | <title>The Dormouse's story</title> The Dormouse's story |
| Итерирваться по всем предкам певого элемента <a> выводя имена тэгов предков | | p Body Html [document] |
| Получить следующий элемент находящийся на том же уровне | | ,\n |
| Получить предыдущий элемент находящийся на том же уровне | | and\n |
| Итерирваться по всем элементам на уровне первого тэга <a> в прямом направлении | | ,\n <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and\n<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a> ; and they lived at the bottom of a well. |
| Итерирваться по всем элементам на уровне тэга <a id="link3"> в обратном направлении | | and\n <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> ,\n <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a> Once upon a time there were three little sisters; and their names were\n |
| Получить следующий элемент первого тэга <p> с заходом внутрь элемента | | <b>The Dormouse's story</b> |
| Получить предыдущий элемент первого тэга <p> с заходом внутрь элемента | | \n |
| Итерироваться по всем элементам на уровне <a id='link3'> с заходом внутрь элементов. | | Tillie ;\nand they lived at the bottom of a well. \n <p class="story">...</p>... \n |
| Получение значений из выбранного тэга | ||
| Получить имя выборанного тэга | | "head" |
| Получить текст содержащийся внутри тэга <head> ислкючая все теги. | | "The Dormouse's story" |
| Внутри тега только один наследник получить его содержимое включая значение тэга | | [<title>The Dormouse's story</title>] |
| Внутри тега только один наследник получить его содержимое без значение тэга | | "The Dormouse's story" |
| Получить аттрибут 'id' первого тэга <a> | | 'link_1' |
| Получить все аттрибуты первого тэга <a> | | {'href': 'http://example.com/elsie', 'class': ['sister'], 'id': 'link1'} |
| Поиск по дереву | ||
| Найти все тэги <a> | | [<a class="sister" href="http://example.com/elsie" id="link1"><span>Elsie</span></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] |
| Найти все тэги соответствующие регулярному выражению ^t.*$ | | [<title>The Dormouse's story</title>] |
| Найти все тэги <a> или <title> | | [<title>The Dormouse's story</title>, <a class="sister" href="http://example.com/elsie" id="link1"><span>Elsie</span></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] |
| Найти тэги содержащие атрибут class и дочерний тэг <b> | | [<p class="title"><b>The Dormouse's story</b></p>] |
| Найти тэги с атрибутом id="link2" | | [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>] |
| Найти тэги с атрибутом href соотвествующим регулярному выражению 'elsie$' | | [<a class="sister" href="http://example.com/elsie" id="link1"><span>Elsie</span></a>] |
| Найти тэги с атрибутом href соотвествующим регулярному выражению 'elsie$' и атрибутом id="link1" | | [<a class="sister" href="http://example.com/elsie" id="link1"><span>Elsie</span></a>] |
| Найти все тэги атрибут id которых имеет какое либо значение | | [<a class="sister" href="http://example.com/elsie" id="link1"><span>Elsie</span></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] |
| Найти все тэги в которых атрибут data-name="value" | | [<div data-foo="value">foo!</div>] |
| Найти все тэги с классом class="title" | | [<p class="title"><b>The Dormouse's story</b></p>] |
| Найти все тэги с классом class="title" | | [<p class="title"><b>The Dormouse's story</b></p>] |
| Найти все тэги <p> с классом class="title active" | | |
| Найти содержимое содержащее 'Elsie' | | ['Elsie'] |
| Найти теги <a> содержащие текст 'Elsie' | | [<a class="sister" href="http://example.com/elsie" id="link1"><span>Elsie</span></a>] |
| Найти 2 первых тега <a> | | [<a class="sister" href="http://example.com/elsie" id="link1"><span>Elsie</span></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>] |
| Найти все элементы <title> на уровне html (без рекурсии) | | [] |