beautifulsoup учебник
Начало работы с beautifulsoup
Поиск…
замечания
В этом разделе мы обсудим, что такое Beautiful Soup, для чего он используется, и краткое описание того, как его использовать.
Beautiful Soup - это библиотека Python, которая использует ваш предварительно установленный синтаксический анализатор html / xml и преобразует веб-страницу / html / xml в дерево, состоящее из тегов, элементов, атрибутов и значений. Точнее, дерево состоит из четырех типов объектов: Tag, NavigableString, BeautifulSoup и Comment. Затем это дерево можно «запросить» с помощью методов / свойств объекта BeautifulSoup, созданного из библиотеки парсеров.
Ваша потребность: Часто у вас может быть одна из следующих потребностей:
Вы можете проанализировать веб-страницу, чтобы определить, сколько найденных тегов найдено, сколько элементов каждого тега найдено и их значения. Возможно, вы захотите их изменить.
Возможно, вам захочется определить имена и значения элементов, чтобы вы могли использовать их вместе с другими библиотеками для автоматизации веб-страниц, таких как Selenium .
Возможно, вы захотите перенести / извлечь данные, показанные на веб-странице, в другие форматы, такие как CSV-файл или реляционную базу данных, такую как SQLite или mysql. В этом случае библиотека поможет вам с первого шага, понять структуру веб-страницы, хотя вы будете использовать другие библиотеки для совершения передачи.
Возможно, вам захочется узнать, сколько элементов оформлено с использованием определенного стиля CSS и какие.
Последовательность для типичного базового использования в вашем коде Python:
Импортировать библиотеку Beautiful Soup
Откройте веб-страницу или html-текст с помощью библиотеки BeautifulSoup, указав, какой парсер будет использоваться. Результатом этого шага является объект BeautifulSoup. (Примечание. Указанное имя парсера должно быть установлено уже как часть ваших Python pacakges. Например,
html.parser- встроенный пакет «с батареями», поставляемый с Python. Вы можете установить другие синтаксические анализаторы, такие какlxmlилиhtml5lib.)«Запрос» или
'object.method'поиск объекта BeautifulSoup с использованием синтаксиса'object.method'и получить результат в коллекции, например, в словаре Python. Для некоторых методов выход будет простым значением.Используйте результат на предыдущем шаге, чтобы делать все, что вы хотите с ним, в остальной части вашего кода Python. Вы также можете изменить значения элементов или значения атрибутов в дереве. Модификации не влияют на исходный код html, но вы можете вызывать методы форматирования вывода (например,
prettify) для создания нового вывода из объекта BeautifulSoup.
Обычно используемые методы. Как правило, методы поиска .find и .find_all используются для поиска дерева, предоставляя входные аргументы.
Входными аргументами являются: имя тега, которое запрашивается, имена атрибутов и другие связанные аргументы. Эти аргументы могут быть представлены как: строка, регулярное выражение, список или даже функция.
Общее использование объекта BeautifulSoup включает в себя:
- Поиск по классу CSS
- Поиск по адресу гиперссылки
- Поиск по элементу Id, тег
- Поиск по имени атрибута. Значение атрибута.
Если вам нужно отфильтровать дерево с помощью сочетания вышеуказанных критериев, вы также можете написать функцию, которая оценивает значение true или false, и поиск по этой функции.
Версии
| Версия | замечания | Имя пакета | Дата выхода |
|---|---|---|---|
| 3.x | Версия 3.2.1; Только Python 2 | BeautifulSoup | 2012-02-16 |
| 4.x | Версия 4.5.0; Python 2 и 3 | beautifulsoup4 | 2016-07-20 |
Установка или настройка
pip может использоваться для установки BeautifulSoup. Чтобы установить версию 4 BeautifulSoup, выполните команду:
pip install beautifulsoup4
Имейте в виду, что имя пакета beautifulsoup4 вместо beautifulsoup , последнее название означает старую версию, см. Old beautifulsoup
Пример стирания BeautifulSoup «Hello World»
from bs4 import BeautifulSoup
import requests
main_url = "https://fr.wikipedia.org/wiki/Hello_world"
req = requests.get(main_url)
soup = BeautifulSoup(req.text, "html.parser")
# Finding the main title tag.
title = soup.find("h1", class_ = "firstHeading")
print title.get_text()
# Finding the mid-titles tags and storing them in a list.
mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")]
# Now using css selectors to retrieve the article shortcut links
links_tags = soup.select("li.toclevel-1")
for tag in links_tags:
print tag.a.get("href")
# Retrieving the side page links by "blocks" and storing them in a dictionary
side_page_blocks = soup.find("div",
id = "mw-panel").find_all("div",
class_ = "portal")
blocks_links = {}
for num, block in enumerate(side_page_blocks):
blocks_links[num] = [link.get("href") for link in block.find_all("a", href = True)]
print blocks_links[0]
Выход:
"Hello, World!" program
#Purpose
#History
#Variations
#See_also
#References
#External_links
[u'/wiki/Main_Page', u'/wiki/Portal:Contents', u'/wiki/Portal:Featured_content', u'/wiki/Portal:Current_events', u'/wiki/Special:Random', u'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en', u'//shop.wikimedia.org']
Ввод вашего предпочтительного синтаксического анализатора при запуске Beautiful Soup позволяет избежать обычного Warning о том, что no parser was explicitely specified .
Для поиска элемента в дереве веб-страниц можно использовать различные методы.
Хотя существует и несколько других методов, CSS classes CSS selectors - это два удобных способа поиска элементов в дереве.
Следует отметить, что мы можем искать теги, устанавливая их значение атрибута True при их поиске.
get_text() позволяет нам получать текст, содержащийся в теге. Он возвращает его как одну строку Unicode. tag.get("attribute") позволяет получить значение атрибута тега.