Парсинг веб-страниц с помощью Beautiful Soup часть 1
Beautiful Soup - это сторонняя библиотека на языке Python, которая позволяет разбирать HTML- и XML-файлы и извлекать из них полезную информацию. Библиотека широко используется для целей парсинга веб-страниц, так как она упрощает извлечение данных с веб-страниц.
Парсинг веб-страниц - это процесс извлечения данных с веб-сайтов. Чтобы извлечь нужные данные с веб-сайта, первым шагом является загрузка исходного кода HTML или XML страницы. Затем этот исходный код разбирается и из него извлекается нужная информация. Это может быть трудной задачей, так как HTML- и XML-файлы не очень читабельны, и данные часто распределены по разным элементам в иерархической структуре.
Beautiful Soup помогает решить эту проблему, предоставляя методы и объекты, которые упрощают извлечение данных из HTML- и XML-файлов. Он создает дерево разбора из исходного кода веб-страницы, которое представляет структуру данных иерархическим образом. Дерево разбора можно использовать для извлечения данных, перемещаясь по дереву и получая доступ к элементам и их свойствам.
Некоторые основные возможности Beautiful Soup включают:
Перед установкой beautiful soup нам нужно узнать еще об одной библиотеке - requests.
Библиотека requests
- это популярная библиотека на языке Python, используемая для отправки HTTP-запросов. Она позволяет легко отправлять запросы HTTP/1.1, и это одна из самых простых доступных библиотек.
При парсинге веб-страниц вам часто нужно отправить запрос на веб-сайт, чтобы получить исходный код HTML или XML страницы. Библиотека requests
предоставляет простой и интуитивно понятный интерфейс для отправки HTTP-запросов, включая GET-запросы, которые используются для получения исходного кода веб-страницы.
pip install requests
Например, следующий код использует библиотеку requests
для отправки GET-запроса на веб-сайт и получения ответа:
import requests
url = "https://www.example.com"
response = requests.get(url)
В этом коде метод requests.get
используется для отправки GET-запроса на указанный URL, и ответ сохраняется в переменной response
. Переменная response
содержит различную информацию о ответе, включая код состояния, заголовки и содержимое ответа.
Содержимое ответа можно получить, используя атрибут response.content
, который возвращает содержимое в виде объекта bytes. Это содержимое затем можно передать в Beautiful Soup для разбора и извлечения данных.
Установка
Beautiful Soup можно установить с помощью менеджера пакетов pip
, выполнив следующую команду в терминале или командной строке:
pip install beautifulsoup4
Установка завершена, поэтому давайте начнем парсинг. В качестве примера мы будем использовать веб-сайт Wikipedia.
На первом шаге отправим запрос на указанный URL:
import requests
url = "https://en.wikipedia.org/wiki/Web_scraping"
response = requests.get(url)
print(response.content)
В этом коде метод requests.get
используется для отправки GET-запроса на указанный URL, и ответ сохраняется в переменной response
. Переменная response
содержит различную информацию о ответе, включая код состояния, заголовки и содержимое ответа.
Содержимое ответа можно получить, используя атрибут response.content
, который возвращает содержимое в виде объекта bytes. Это содержимое затем можно передать в Beautiful Soup для разбора и извлечения данных.
import requests
from bs4 import BeautifulSoup
# Отправляем GET-запрос на веб-сайт
url = "https://www.example.com"
response = requests.get(url)
# Создаем объект BeautifulSoup и указываем парсер
soup = BeautifulSoup(response.content, "html.parser")
# Находим нужные элементы в HTML-коде
title_tag = soup.find("title")
header_tags = soup.find_all("h1")
# Извлекаем данные из элементов
title = title_tag.text
headers = [header.text for header in header_tags]
# Выводим извлеченные данные
print("Заголовок:", title)
print("Заголовки:", headers)
soup = BeautifulSoup(response.content, "html.parser")
: Эта строка создает объект BeautifulSoup из содержимого ответа и указывает парсер как "html.parser"
. Конструктор BeautifulSoup принимает два аргумента: первый - это содержимое, которое вы хотите разобрать, а второй - это парсер, который вы хотите использовать. В данном случае мы используем html.parser
, который является встроенным парсером в стандартной библиотеке Python.
# это выведет весь текст, присутствующий на странице
print(soup.text)
Если мы хотим найти текст по тегу, например h1, h2, title, то мы используем функцию find(), чтобы найти весь текст.
h1 = soup.find("h1")
print(h1)
Вывод:
Он вернет HTML-код, если мы хотим получить обычный текст, то мы должны использовать print(h1.text), это вернет только текст, т.е. Парсинг веб-страниц
Аналогичным образом мы можем найти по разным тегам, таким как h1, h2, p, a и многим другим.
Если мы хотим найти все теги h2, присутствующие на странице, то мы должны использовать функцию find_all, она вернет список всех текстов, которые присутствуют на странице.
h2 = soup.find_all('h2')
print(h2)
Вывод:
Если мы хотим вывести текст, то нам нужно пройти по списку
for i in h2:
print(i.text)
Вывод:
Точно так же мы можем найти ссылки, присутствующие на странице
link = soup.find_all("a")
print(link)
Это выведет список всех тегов "a"
for i in link:
print(i.get('href'))
Вывод:
Чтобы найти ссылки внутри HTML, нам нужно использовать функцию get() и извлечь "href", который будет содержать ссылку.
В следующем разделе мы рассмотрим, как можно найти текст, используя имя класса или идентификатор, поэтому следуйте за мной, чтобы узнать больше о парсинге веб-страниц :)
Надеюсь, вам понравилось обучение!