Поиск…


замечания

В этом разделе мы обсудим, что такое Beautiful Soup, для чего он используется, и краткое описание того, как его использовать.

Beautiful Soup - это библиотека Python, которая использует ваш предварительно установленный синтаксический анализатор html / xml и преобразует веб-страницу / html / xml в дерево, состоящее из тегов, элементов, атрибутов и значений. Точнее, дерево состоит из четырех типов объектов: Tag, NavigableString, BeautifulSoup и Comment. Затем это дерево можно «запросить» с помощью методов / свойств объекта BeautifulSoup, созданного из библиотеки парсеров.

Ваша потребность: Часто у вас может быть одна из следующих потребностей:

  1. Вы можете проанализировать веб-страницу, чтобы определить, сколько найденных тегов найдено, сколько элементов каждого тега найдено и их значения. Возможно, вы захотите их изменить.

  2. Возможно, вам захочется определить имена и значения элементов, чтобы вы могли использовать их вместе с другими библиотеками для автоматизации веб-страниц, таких как Selenium .

  3. Возможно, вы захотите перенести / извлечь данные, показанные на веб-странице, в другие форматы, такие как CSV-файл или реляционную базу данных, такую ​​как SQLite или mysql. В этом случае библиотека поможет вам с первого шага, понять структуру веб-страницы, хотя вы будете использовать другие библиотеки для совершения передачи.

  4. Возможно, вам захочется узнать, сколько элементов оформлено с использованием определенного стиля CSS и какие.

Последовательность для типичного базового использования в вашем коде Python:

  1. Импортировать библиотеку Beautiful Soup

  2. Откройте веб-страницу или html-текст с помощью библиотеки BeautifulSoup, указав, какой парсер будет использоваться. Результатом этого шага является объект BeautifulSoup. (Примечание. Указанное имя парсера должно быть установлено уже как часть ваших Python pacakges. Например, html.parser - встроенный пакет «с батареями», поставляемый с Python. Вы можете установить другие синтаксические анализаторы, такие как lxml или html5lib .)

  3. «Запрос» или 'object.method' поиск объекта BeautifulSoup с использованием синтаксиса 'object.method' и получить результат в коллекции, например, в словаре Python. Для некоторых методов выход будет простым значением.

  4. Используйте результат на предыдущем шаге, чтобы делать все, что вы хотите с ним, в остальной части вашего кода Python. Вы также можете изменить значения элементов или значения атрибутов в дереве. Модификации не влияют на исходный код html, но вы можете вызывать методы форматирования вывода (например, prettify ) для создания нового вывода из объекта BeautifulSoup.

Обычно используемые методы. Как правило, методы поиска .find и .find_all используются для поиска дерева, предоставляя входные аргументы.

Входными аргументами являются: имя тега, которое запрашивается, имена атрибутов и другие связанные аргументы. Эти аргументы могут быть представлены как: строка, регулярное выражение, список или даже функция.

Общее использование объекта BeautifulSoup включает в себя:

  1. Поиск по классу CSS
  2. Поиск по адресу гиперссылки
  3. Поиск по элементу Id, тег
  4. Поиск по имени атрибута. Значение атрибута.

Если вам нужно отфильтровать дерево с помощью сочетания вышеуказанных критериев, вы также можете написать функцию, которая оценивает значение 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") позволяет получить значение атрибута тега.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow