CoderCastrov logo
CoderCastrov
Питон

Парсинг веб-страниц с помощью Beautiful Soup часть 1

Парсинг веб-страниц с помощью Beautiful Soup часть 1
просмотров
4 мин чтение
#Питон

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", который будет содержать ссылку.

В следующем разделе мы рассмотрим, как можно найти текст, используя имя класса или идентификатор, поэтому следуйте за мной, чтобы узнать больше о парсинге веб-страниц :)

Надеюсь, вам понравилось обучение!