- Использование библиотеки beautifulsoup в Python
- Введение
- Инструменты
- Реализация
- Сбор заголовков последних технических новостей
- Проверка источника данных
- Извлечение веб-страницы
- Использование BeautifulSoup
- Извлечение заголовка и тела страницы
- Поиск HTML-элементов
- Поиск HTML-элементов по имени класса
- Извлечение текста из HTML-элементов
- Tech Twaddles
- Friday, July 5, 2013
- How to install Beautiful Soup or BS4 on Windows?
- 14 comments:
- BeautifulSoup4 can’t be installed in python3.5 on Windows7
- How to install beautiful soup 4 with python 2.7 on windows
- 4 Answers 4
- Документация Beautiful Soup¶
- Техническая поддержка¶
- Быстрый старт¶
- Установка Beautiful Soup¶
- Проблемы после установки¶
- Установка парсера¶
- Приготовление супа¶
- Виды объектов¶
- Атрибуты¶
- Многозначные атрибуты¶
- NavigableString ¶
- BeautifulSoup ¶
- Комментарии и другие специфичные строки¶
- Навигация по дереву¶
- Проход сверху вниз¶
- Навигация с использованием имен тегов¶
Использование библиотеки beautifulsoup в Python
Это руководство для начинающих по использованию библиотеки beautifulsoup для парсинга данных с веб сайтов.
Введение
Веб парсинг это метод программирования для извлечения данных с веб-сайтов. Процесс получения данных с веб-сайтов может быть выполнен вручную, но это медленный и утомительный процесс, когда данных много. Web Scraping обеспечивает более автоматизированный и простой способ извлечения информации с веб-сайтов.
Веб парсинг это больше, чем просто получение данных: этот метод также может помочь вам архивировать данные и отслеживать изменения в данных онлайн.
Он также известен как веб скрейпинг или веб паук.
В интернете очень много информации на эту тему, и она растет довольно быстро. Люди парсят интернет по многим причинам и вот некоторые из них:
- Мониторинг изменения цен в режиме онлайн.
- Сбор списка недвижимости.
- Извлечение последних новостей с новостного сайта.
- Мониторинг погодных данных.
- Исследование чего-либо.
- Извлечение большого объема данных для интеллектуального анализа данных и так далее.
Все сводится к тому, какие данные вы хотите получить или отследить в интернете.
Инструменты
Существует множество инструментов и языков программирования для очистки контента в интернете, но Python обеспечивает плавный и простой процесс. Веб-скрейпинг может быть выполнен на Python с помощью таких библиотек, как Requests, BeautifulSoup, Scrapy и Selenium.
Beautifulsoup это лучший выбор при запуске веб-скрейпинга в Python, поэтому мы будем использовать BeautifulSoup4 и библиотеку запросов Python для Web Scraping.
Не все веб-сайты разрешают собирать данные, поэтому перед сбором вам следует проверить политику веб-сайта.
Реализация
Есть всего три шага в очистке веб-страницы:
- Проверка веб-страницы.
- Извлечение веб-страницы.
- Простая очистка веб-страницы.
Сбор заголовков последних технических новостей
habr.com предоставляет последние новости из технической индустрии, поэтому сегодня я буду парсить последние заголовки новостей с их домашней страницы.
Проверка источника данных
Итак, вы должны иметь некоторые базовые знания HTML. Чтобы ознакомиться с веб-страницей habr.com, сначала посетите ее сайт habr.com, затем в вашем браузере нажмите CTRL + U, чтобы просмотреть исходный код веб-страницы. Просматриваемый исходный код это тот же самый код, из которого мы будем собирать наши данные.
Обладая некоторыми базовыми знаниями в области HTML, вы можете проанализировать исходный код и найти HTML-разделы или элементы, которые содержат некоторые данные, такие как заголовки новостей, обзор новостей, дата статьи и так далее.
Извлечение веб-страницы
Чтобы собрать информацию с веб-страницы, вы должны сначала извлечь (получить или загрузить) страницу. Но обратите внимание, что компьютеры не видят веб-страницы так, как мы, люди, то есть красивые макеты, цвета, шрифты и тому подобное.
Компьютеры видят и понимают веб-страницы как код, то есть исходный код, который мы видим, когда просматриваем исходный код в браузере, нажимая CTRL + U, как мы это делали при проверке веб-страницы.
Чтобы получить веб-страницу с помощью Python, я буду использовать библиотеку requests, которую вы можете установить с помощью pip:
Чтобы получить веб-страницу с помощью библиотеки запросов, я пишу код:
Переменная response содержит ответ, который мы получаем после отправки запроса на https://www.habr.com/.
response.status_code возвращает код ответа, указывающий, был ли запрос успешным или нет. Код состояния 200 указывает на то, что запрос был успешным, 4** означает ошибку клиента (ошибку с вашей стороны) и 5** означает ошибку сервера.
response.content возвращает содержимое ответа, которое является исходным кодом веб-страницы, и это тот же исходный код, который доступен вам при просмотре его в веб-браузере.
Использование BeautifulSoup
После того, как я получил веб-страницу и доступ к ее исходному коду, мне нужно разобрать ее с помощью BeautifulSoup.
Beautiful Soup это библиотека Python для извлечения данных из HTML-и XML-файлов. Я буду использовать ее для извлечения необходимых нам данных из нашего исходного кода HTML.
Устанавливаем BeautifulSoup через pip:
Прежде чем сделать какое-либо извлечение, я должен разобрать HTML, который у нас есть:
Класс BeautifulSoup требует двух аргументов: исходного кода HTML страницы, который хранится в response.content, и HTML-parser.
HTML-parser это простой модуль синтаксического анализа HTML, встроенный в Python и BeautifulSoup, который нужен для разбора response.content (исходный код HTML).
Извлечение заголовка и тела страницы
После синтаксического анализа с помощью BeautifulSoup анализируемый HTML-код хранится в переменной Soup, которая является основой всего извлечения, которое мы собираемся сделать. Давайте начнем с извлечения заголовка страницы, элементов head и body:
soup.title возвращает элемент title веб-страницы в формате html(…). Аналогично soup.head и soup.body возвращают элементы head и body веб-страницы.
Поиск HTML-элементов
Выборка только заголовков, head и body веб-страницы по-прежнему дает нам слишком много нежелательных данных. Нам нужны только некоторые данные из тела HTML, такие как поиск определённых HTML-элементов, например, div, a, p, footer, img, и так далее. Моя цель собрать заголовки новостей с веб-страницы. Когда я проводил проверку, вы заметили, что новостные статьи хранились с разбивкой по тегам. Давайте посмотрим, будет ли полезно найти все элементы a на веб-странице:
Поиск всех тэгов a это еще один шаг ближе к цели, но мне все равно нужно быть более конкретным и находить только те элементы a с нужными нам данными.
Как вы можете видеть выше, заголовки новостей находятся в элементах a с именем класса post__title_link, то есть:
Таким образом, нам нужно будет найти только элементы a с классом post__title_link.
Поиск HTML-элементов по имени класса
Чтобы найти все элементы a с классом post__title_link, я пишу следующий код:
ищет все элементы a названием класса post__title_link и возвращает их списком.
Затем мы перебираем возвращенный список и извлекаем из него все элементы, поскольку он содержит искомый текст:
Мы почти закончили, у меня есть список элементов с нашими новостными заголовками в них. Мы должны извлечь их из HTML-элемента (извлечь текст из элементов).
Извлечение текста из HTML-элементов
В BeautifulSoup для извлечения текста мы используем атрибут .text для получения текстовых данных из HTML-элемента:
Ура! Мы спарсили последние заголовки новостей из technewsworld.com. Обратите внимание, что ваши заголовки новостей будут отличаться от моих, так как главная страница всегда обновляется последними новостями.
Эта небольшая программа, которую мы написали, может служить автоматизированным способом отслеживания последних изменений от technewsworld.com, потому что каждый раз, когда мы запускаем эту программу, мы получаем последние изменения с главной страницы.
Если вы ищите способ системно подойти к обучению языка программирования Python, рекомендую записаться на курсы онлайн обучения.
Поделиться записью в социальных сетях
Tech Twaddles
Friday, July 5, 2013
How to install Beautiful Soup or BS4 on Windows?
BeautifulSoup is a Python module which is meant for web scraping. That is, using Python, you can fetch an html webpage (using a module such as urllib2), and then obtain meaningful information out of the html file (using the BeautifulSoup module).
Here are the steps to download and install BeautifulSoup on Windows. It assumes you have already installed python and you know how to use an archiving tool such as 7-zip.
1) Download the BeautifulSoup compressed file from the below link:
http://www.crummy.com/software/BeautifulSoup/bs4/download/
In my setup, I have downloaded a file named beautifulsoup4-4.2.1.tar.gz.
2) Extract the archive using a tool such as 7-zip. Once you have extracted the files, open cmd prompt, and go to directory named beautifulsoup4-4.2.1
3) Run the following command to install BeautifulSoup
C:\>python setup.py install
4) Test the installation with this command :
>>>from bs4 import BeautifulSoup
If you see the python prompt (>>>) in the next line without any errors, then it means BS4 is successfully installed.
For detailed coverage, check out this book : Getting Started with Beautiful Soup
14 comments:
Very simple instructions given here, went thru like a breeze 🙂
To convert Bitcoin into cash, look for a Bitcoin exchange that will allow you to sell your Bitcoin at a reasonable price, for your preferred local currency (such as pesos, dollars, or euros). . Whether or not the exchange supports your preferred currency, and your preferred method of receiving your cash.
neo gas wallet
It has been simply incredibly generous with you to provide openly what exactly many individuals would’ve marketed for an eBook to end up making some cash for their end, primarily given that you could have tried it in the event you wanted oracle training in bangalore.
Thanks for sharing such a good information about money making.Best Cryptocurrency Trading Platform
AWS Training in Bangalore — Live Online & Classroom
myTectra Amazon Web Services (AWS) certification training helps you to gain real time hands on experience on AWS. myTectra offers AWS training in Bangalore using classroom and AWS Online Training globally. AWS Training at myTectra delivered by the experienced professional who has atleast 4 years of relavent AWS experince and overall 8-15 years of IT experience. myTectra Offers AWS Training since 2013 and retained the positions of Top AWS Training Company in Bangalore and India.
IOT Training in Bangalore — Live Online & Classroom
IOT Training course observes iot as the platform for networking of different devices on the internet and their inter related communication. Reading data through the sensors and processing it with applications sitting in the cloud and thereafter passing the processed data to generate different kind of output is the motive of the complete curricula. Students are made to understand the type of input devices and communications among the devices in a wireless media.
Thanks for sharing such a good information
Best Training and Real Time Support
Thank you much more for sharing the worthful post. Your post is very inspiring for me and kindly updating.
Well Said, you have furnished the right information that will be useful to anyone at all time. Thanks for sharing your Ideas.
nice blog good info provided thanks
oracle training in chennai
Thank you for posting informative insights, I think we have got some more information to share with! Do check out Python Training In Chennai and let us know your thoughts. Let’s have great learning!
BeautifulSoup4 can’t be installed in python3.5 on Windows7
I have downloaded beautifulsoup4-4.5.3.tar.gz from https://www.crummy.com/software/BeautifulSoup/bs4/download/4.5/ and unzipped it to my python work directory(which is not my python install directory).
However, when I run
in my IDLE the error massage popped out:
I tried these methods but the error massage above keeps popping out
- open setup.py in my IDLE and run it(gives === RESTART: D:\python\beautifulsoup4-4.5.3\beautifulsoup4-4.5.3\setup.py === in IDLE windows, but from bs4 import BeautifulSoup didn’t work)
- use cmd and go to D:\python\beautifulsoup4-4.5.3\beautifulsoup4-4.5.3, run pip uninstall beautifulsoup4 then run pip install beautifulsoup4 ;it shows that I have successfully installed beautifulsoup4-4.5.3 in cmd line, however, error massage still appearred in IDLE after from bs4 import BeautifulSoup
- use cmd and go to D:\python\beautifulsoup4-4.5.3\beautifulsoup4-4.5.3, run pip3 uninstall beautifulsoup4 then run pip3 install beautifulsoup4 ; useless as above
- run pip install bs4 —ignore-installed ,useless as above
- run setup.py install ,useless as above
- run 2to3 -w bs4 in cmd line under D:\python\beautifulsoup4-4.5.3\beautifulsoup4-4.5.3, returns ‘2to3’ is not recognized as an internal or external command,operable program or batch file.
what should I do?
beside, pip show bs4 gives this
under my C:\Users\myname\AppData\Local\Programs\Python\Python35-32\Lib\site-packages directory, I can see three beautifulsoup related directories:beautifulsoup4-4.5.3.dist-info, bs4 and bs4-0.0.1-py3.5.egg-info, but from bs4 import BeautifulSoup keep throwing out wrong message
How to install beautiful soup 4 with python 2.7 on windows
I have windows vista with Python 2.7. I would like to install BeautifulSoup 4 but apparently I can’t install Beautiful Soup just by copying the file into the site-packages directory. I have to install pip and then run some commands from the command prompt. Could you guide me through that step by step. I am really a noob so make it very simple. Thanks in advance
4 Answers 4
You don’t need pip for installing Beautiful Soup — you can just download it and run python setup.py install from the directory that you have unzipped BeautifulSoup in (assuming that you have added Python to your system PATH — if you haven’t and you don’t want to you can run C:\Path\To\Python27\python «C:\Path\To\BeautifulSoup\setup.py» install )
However, you really should install pip — see How to install pip on Windows for how to do that best (via @MartijnPieters comment)
to install easy_install
Install pip
Download get-pip. Remember to save it as «get-pip.py»
Now go to the download folder. Right click on get-pip.py then open with python.exe.
You can add system variable by
(by doing this you can use pip and easy_install without specifying path)
1 Clicking on Properties of My Computer
2 Then chose Advanced System Settings
3 Click on Advanced Tab
4 Click on Environment Variables
5 From System Variables >>> select variable path.
6 Click edit then add the following lines at the end of it
(please dont copy this, just go to your python directory and copy the paths similar to this)
Документация Beautiful Soup¶
Beautiful Soup — это библиотека Python для извлечения данных из файлов HTML и XML. Она работает с вашим любимым парсером, чтобы дать вам естественные способы навигации, поиска и изменения дерева разбора. Она обычно экономит программистам часы и дни работы.
Эти инструкции иллюстрируют все основные функции Beautiful Soup 4 на примерах. Я покажу вам, для чего нужна библиотека, как она работает, как ее использовать, как заставить ее делать то, что вы хотите, и что нужно делать, когда она не оправдывает ваши ожидания.
Примеры в этой документации работают одинаково на Python 2.7 и Python 3.2.
Возможно, вы ищете документацию для Beautiful Soup 3. Если это так, имейте в виду, что Beautiful Soup 3 больше не развивается, и что поддержка этой версии будет прекращена 31 декабря 2020 года или немногим позже. Если вы хотите узнать о различиях между Beautiful Soup 3 и Beautiful Soup 4, читайте раздел Перенос кода на BS4.
Эта документация переведена на другие языки пользователями Beautiful Soup:
Техническая поддержка¶
Если у вас есть вопросы о Beautiful Soup или возникли проблемы, отправьте сообщение в дискуссионную группу. Если ваша проблема связана с разбором HTML-документа, не забудьте упомянуть, что говорит о нем функция diagnose() .
Быстрый старт¶
Вот HTML-документ, который я буду использовать в качестве примера в этой документации. Это фрагмент из «Алисы в стране чудес» :
Прогон документа через Beautiful Soup дает нам объект BeautifulSoup , который представляет документ в виде вложенной структуры данных:
Вот несколько простых способов навигации по этой структуре данных:
Одна из распространенных задач — извлечь все URL-адреса, найденные на странице в тегах :
Другая распространенная задача — извлечь весь текст со страницы:
Это похоже на то, что вам нужно? Если да, продолжайте читать.
Установка Beautiful Soup¶
Если вы используете последнюю версию Debian или Ubuntu Linux, вы можете установить Beautiful Soup с помощью системы управления пакетами:
$ apt-get install python-bs4 (для Python 2)
$ apt-get install python3-bs4 (для Python 3)
Beautiful Soup 4 публикуется через PyPi, поэтому, если вы не можете установить библиотеку с помощью системы управления пакетами, можно установить с помощью easy_install или pip . Пакет называется beautifulsoup4 . Один и тот же пакет работает как на Python 2, так и на Python 3. Убедитесь, что вы используете версию pip или easy_install , предназначенную для вашей версии Python (их можно назвать pip3 и easy_install3 соответственно, если вы используете Python 3).
$ pip install beautifulsoup4
( BeautifulSoup — это, скорее всего, не тот пакет, который вам нужен. Это предыдущий основной релиз, Beautiful Soup 3. Многие программы используют BS3, так что он все еще доступен, но если вы пишете новый код, нужно установить beautifulsoup4 .)
Если у вас не установлены easy_install или pip , вы можете скачать архив с исходным кодом Beautiful Soup 4 и установить его с помощью setup.py .
$ python setup.py install
Если ничего не помогает, лицензия на Beautiful Soup позволяет упаковать библиотеку целиком вместе с вашим приложением. Вы можете скачать tar-архив, скопировать из него в кодовую базу вашего приложения каталог bs4 и использовать Beautiful Soup, не устанавливая его вообще.
Я использую Python 2.7 и Python 3.2 для разработки Beautiful Soup, но библиотека должна работать и с более поздними версиями Python.
Проблемы после установки¶
Beautiful Soup упакован как код Python 2. Когда вы устанавливаете его для использования с Python 3, он автоматически конвертируется в код Python 3. Если вы не устанавливаете библиотеку в виде пакета, код не будет сконвертирован. Были также сообщения об установке неправильной версии на компьютерах с Windows.
Если выводится сообщение ImportError “No module named HTMLParser”, ваша проблема в том, что вы используете версию кода на Python 2, работая на Python 3.
Если выводится сообщение ImportError “No module named html.parser”, ваша проблема в том, что вы используете версию кода на Python 3, работая на Python 2.
В обоих случаях лучше всего полностью удалить Beautiful Soup с вашей системы (включая любой каталог, созданный при распаковке tar-архива) и запустить установку еще раз.
Если выводится сообщение SyntaxError “Invalid syntax” в строке ROOT_TAG_NAME = u'[document]’ , вам нужно конвертировать код из Python 2 в Python 3. Вы можете установить пакет:
$ python3 setup.py install
или запустить вручную Python-скрипт 2to3 в каталоге bs4 :
Установка парсера¶
Beautiful Soup поддерживает парсер HTML, включенный в стандартную библиотеку Python, а также ряд сторонних парсеров на Python. Одним из них является парсер lxml. В зависимости от ваших настроек, вы можете установить lxml с помощью одной из следующих команд:
$ apt-get install python-lxml
$ pip install lxml
Другая альтернатива — написанный исключительно на Python парсер html5lib, который разбирает HTML таким же образом, как это делает веб-браузер. В зависимости от ваших настроек, вы можете установить html5lib с помощью одной из этих команд:
$ apt-get install python-html5lib
$ pip install html5lib
Эта таблица суммирует преимущества и недостатки каждого парсера:
Парсер | Типичное использование | Преимущества | Недостатки |
html.parser от Python | BeautifulSoup(markup, «html.parser») |
|
|
HTML-парсер в lxml | BeautifulSoup(markup, «lxml») |
|
|
XML-парсер в lxml | BeautifulSoup(markup, «lxml-xml») BeautifulSoup(markup, «xml») |
|
|
html5lib | BeautifulSoup(markup, «html5lib») |
|
|
Я рекомендую по возможности установить и использовать lxml для быстродействия. Если вы используете версию Python 2 более раннюю, чем 2.7.3, или версию Python 3 более раннюю, чем 3.2.2, необходимо установить lxml или html5lib, потому что встроенный в Python парсер HTML просто недостаточно хорош в старых версиях.
Обратите внимание, что если документ невалиден, различные парсеры будут генерировать дерево Beautiful Soup для этого документа по-разному. Ищите подробности в разделе Различия между парсерами.
Приготовление супа¶
Чтобы разобрать документ, передайте его в конструктор BeautifulSoup . Вы можете передать строку или открытый дескриптор файла:
Первым делом документ конвертируется в Unicode, а HTML-мнемоники конвертируются в символы Unicode:
Затем Beautiful Soup анализирует документ, используя лучший из доступных парсеров. Библиотека будет использовать HTML-парсер, если вы явно не укажете, что нужно использовать XML-парсер. (См. Разбор XML.)
Виды объектов¶
Beautiful Soup превращает сложный HTML-документ в сложное дерево объектов Python. Однако вам придется иметь дело только с четырьмя видами объектов: Tag , NavigableString , BeautifulSoup и Comment .
Объект Tag соответствует тегу XML или HTML в исходном документе:
У объекта Tag (далее «тег») много атрибутов и методов, и я расскажу о большинстве из них в разделах Навигация по дереву и Поиск по дереву. На данный момент наиболее важными особенностями тега являются его имя и атрибуты.
У каждого тега есть имя, доступное как .name :
Если вы измените имя тега, это изменение будет отражено в любой HTML- разметке, созданной Beautiful Soup:
Атрибуты¶
У тега может быть любое количество атрибутов. Тег id = «boldest»> имеет атрибут “id”, значение которого равно “boldest”. Вы можете получить доступ к атрибутам тега, обращаясь с тегом как со словарем:
Вы можете получить доступ к этому словарю напрямую как к .attrs :
Вы можете добавлять, удалять и изменять атрибуты тега. Опять же, это делается путем обращения с тегом как со словарем:
Многозначные атрибуты¶
В HTML 4 определено несколько атрибутов, которые могут иметь множество значений. В HTML 5 пара таких атрибутов удалена, но определено еще несколько. Самый распространённый из многозначных атрибутов — это class (т. е. тег может иметь более одного класса CSS). Среди прочих rel , rev , accept-charset , headers и accesskey . Beautiful Soup представляет значение(я) многозначного атрибута в виде списка:
Если атрибут выглядит так, будто он имеет более одного значения, но это не многозначный атрибут, определенный какой-либо версией HTML- стандарта, Beautiful Soup оставит атрибут как есть:
Когда вы преобразовываете тег обратно в строку, несколько значений атрибута объединяются:
Вы можете отключить объединение, передав multi_valued_attributes = None в качестве именованного аргумента в конструктор BeautifulSoup :
Вы можете использовать get_attribute_list , того чтобы получить значение в виде списка, независимо от того, является ли атрибут многозначным или нет:
Если вы разбираете документ как XML, многозначных атрибутов не будет:
Опять же, вы можете поменять настройку, используя аргумент multi_valued_attributes :
Вряд ли вам это пригодится, но если все-таки будет нужно, руководствуйтесь значениями по умолчанию. Они реализуют правила, описанные в спецификации HTML:
NavigableString ¶
Строка соответствует фрагменту текста в теге. Beautiful Soup использует класс NavigableString для хранения этих фрагментов текста:
NavigableString похожа на строку Unicode в Python, не считая того, что она также поддерживает некоторые функции, описанные в разделах Навигация по дереву и Поиск по дереву. Вы можете конвертировать NavigableString в строку Unicode с помощью unicode() :
Вы не можете редактировать строку непосредственно, но вы можете заменить одну строку другой, используя replace_with() :
NavigableString поддерживает большинство функций, описанных в разделах Навигация по дереву и Поиск по дереву, но не все. В частности, поскольку строка не может ничего содержать (в том смысле, в котором тег может содержать строку или другой тег), строки не поддерживают атрибуты .contents и .string или метод find() .
Если вы хотите использовать NavigableString вне Beautiful Soup, вам нужно вызвать метод unicode() , чтобы превратить ее в обычную для Python строку Unicode. Если вы этого не сделаете, ваша строка будет тащить за собой ссылку на все дерево разбора Beautiful Soup, даже когда вы закончите использовать Beautiful Soup. Это большой расход памяти.
BeautifulSoup ¶
Объект BeautifulSoup представляет разобранный документ как единое целое. В большинстве случаев вы можете рассматривать его как объект Tag . Это означает, что он поддерживает большинство методов, описанных в разделах Навигация по дереву и Поиск по дереву.
Вы также можете передать объект BeautifulSoup в один из методов, перечисленных в разделе Изменение дерева, по аналогии с передачей объекта Tag . Это позволяет вам делать такие вещи, как объединение двух разобранных документов:
Поскольку объект BeautifulSoup не соответствует действительному HTML- или XML-тегу, у него нет имени и атрибутов. Однако иногда бывает полезно взглянуть на .name объекта BeautifulSoup , поэтому ему было присвоено специальное «имя» .name “[document]”:
Комментарии и другие специфичные строки¶
Tag , NavigableString и BeautifulSoup охватывают почти все, с чем вы столкнётесь в файле HTML или XML, но осталось ещё немного. Пожалуй, единственное, о чем стоит волноваться, это комментарий:
Объект Comment — это просто особый тип NavigableString :
Но когда он появляется как часть HTML-документа, Comment отображается со специальным форматированием:
Beautiful Soup определяет классы для всего, что может появиться в XML-документе: CData , ProcessingInstruction , Declaration и Doctype . Как и Comment , эти классы являются подклассами NavigableString , которые добавляют что-то еще к строке. Вот пример, который заменяет комментарий блоком CDATA:
Навигация по дереву¶
Вернемся к HTML-документу с фрагментом из «Алисы в стране чудес»:
Я буду использовать его в качестве примера, чтобы показать, как перейти от одной части документа к другой.
Проход сверху вниз¶
Теги могут содержать строки и другие теги. Эти элементы являются дочерними ( children ) для тега. Beautiful Soup предоставляет множество различных атрибутов для навигации и перебора дочерних элементов.
Обратите внимание, что строки Beautiful Soup не поддерживают ни один из этих атрибутов, потому что строка не может иметь дочерних элементов.
Навигация с использованием имен тегов¶
Самый простой способ навигации по дереву разбора — это указать имя тега, который вам нужен. Если вы хотите получить тег , просто напишите soup.head :
Вы можете повторять этот трюк многократно, чтобы подробнее рассмотреть определенную часть дерева разбора. Следующий код извлекает первый тег внутри тега :
Использование имени тега в качестве атрибута даст вам только первый тег с таким именем: