• Добро пожаловать на сайт - wlux.net!

    FAQ по форуму

    1. Все сообщения до группы местный проходят модерацию от 1 минуты до 24 часа

    2. Сообщения учитываються в следующих разделах: Читать

    3.Что-бы скачать вложение нужно 2 сообщения.

    4.Личные переписки работают только с Администрацией форума

    5. Запрещено: Просить скрытый текст , спам, реклама, скам, ддос, кардинг и другая чернуха, нарушать любые законы РФ/СНГ = бан аккаунта

    6. Внимание! Мы не удаляем аккаунты с форума! Будьте внимательны ДО регистрации! Как удалить аккаунт на форуме?!

    5.Не понимаю, как и что тут работает у вас?!Как создавать темы, писать сообщения, как получать реакции. Почему не засчитывает сообщения. Все ответы здесь

This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

python Гайд Ваш первый парсер на python с помощью beautifulsoup4 и requests.

Оффлайн

sunilia 

Проверенный
Местный
LV
3
 
14.09.2024
78
5
18
Награды
5

Репутация:

  • Автор темы
  • #1
Всем привет! Сегодня мы с вами напишем небольшой парсер на python.

Библиотека BeautifulSoup — это мощный инструмент для парсинга HTML и XML документов. Она помогает извлекать данные из веб-страниц, обрабатывать их, изменять и анализировать. BeautifulSoup автоматически разбирает деревья HTML и XML документов, делая процесс парсинга проще и удобнее.

Установка BeautifulSoup4

Для начала нам нужно установить саму библиотеку. Для этого воспользуемся pip:

Bash:
pip install beautifulsoup4

Также для работы с веб-страницами нам понадобится модуль для получения HTML — чаще всего это requests:

Bash:
pip install requests

Теперь можем приступать к написанию кода!

Пример парсинга страницы

Допустим, нам нужно спарсить страницу и вытащить из неё все заголовки h1 и h2. Вот как это сделать:

Python:
import requests
from bs4 import BeautifulSoup

# Загружаем страницу
url = "https://example.com"
response = requests.get(url)

# Парсим HTML
soup = BeautifulSoup(response.text, "html.parser")

# Находим все заголовки h1
h1_tags = soup.find_all('h1')

# Находим все заголовки h2
h2_tags = soup.find_all('h2')

# Выводим результат
print("Заголовки H1:")
for h1 in h1_tags:
    print(h1.text)

print("\nЗаголовки H2:")
for h2 in h2_tags:
    print(h2.text)

В этом примере мы сначала загружаем страницу с помощью requests, а затем передаем её содержимое в BeautifulSoup для парсинга. После этого с помощью метода find_all находим все элементы, соответствующие заданному тегу (в нашем случае h1 и h2), и выводим их текстовое содержимое.

Как работать с атрибутами

BeautifulSoup позволяет легко извлекать не только текст между тегами, но и атрибуты этих тегов. Например, давайте вытащим все ссылки (теги `a`) и их URL-адреса:

Python:
import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# Находим все ссылки
links = soup.find_all('a')

# Выводим URL каждой ссылки
for link in links:
    href = link.get('href')
    print(href)

Метод get позволяет извлечь значение конкретного атрибута тега. В этом случае мы получаем значение атрибута href у каждого тега `a`.

Поиск по CSS-классам

Иногда нам нужно найти элементы по определенным классам. Это тоже делается очень легко с BeautifulSoup. Например, предположим, что на странице есть элементы с классом `article-title`, и мы хотим их все собрать:

Python:
import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# Находим все элементы с классом article-title
titles = soup.find_all('div', class_='article-title')

# Выводим текст внутри этих элементов
for title in titles:
    print(title.text)

Здесь мы используем параметр class_, чтобы указать, что ищем элементы с определенным CSS-классом. Это очень удобно, если на странице много однотипных элементов, и нужно получить только те, которые имеют конкретный класс.

Работа с вложенными тегами

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

Python:
import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# Находим основной контент страницы (например, блок с id="main-content")
main_content = soup.find('div', id='main-content')

# Ищем внутри этого блока все заголовки h2
h2_tags = main_content.find_all('h2')

# Выводим текст заголовков
for h2 in h2_tags:
    print(h2.text)

Здесь мы сначала находим блок с id="main-content", а затем внутри него ищем все заголовки h2. Это позволяет точно выбирать нужные элементы на сложных страницах.

BeautifulSoup — это очень мощная библиотека для парсинга HTML и XML документов.
Если будут вопросы - пишите, будем разбираться
 
M Оффлайн

mistral

Местный
Участник
LV
2
 
17.09.2024
36
0
20
Награды
3

Репутация:

Спасибо за гайд!
Получается для работы с сайтом и выполнения какого-то конкретного сценария нам нужно изучить его внутреннее устройство (где какая вкладка, кнопка, форма) и далее гонять этот сценарий?
Или парсер нужен для другого?
 
Оффлайн

sunilia 

Проверенный
Местный
LV
3
 
14.09.2024
78
5
18
Награды
5

Репутация:

Цели парсера назначаете вы сами
Однако если вы говорите про js, то вам нужна третья часть этого гайда.
 
D Оффлайн

Doomdaily

Участник
LV
3
 
26.01.2023
6
0
24
Награды
3
25

Репутация:

Спасибо за гайд , как раз хотел испытать такое
 
A Оффлайн

alexalex4

Участник
LV
2
 
29.09.2024
5
0
11
Награды
2
25

Репутация:

Интересен питон, можно начать с коротких руководств.
 
F Оффлайн

Facece777

Местный
Участник
LV
2
 
20.10.2024
50
0
15
Награды
3
34

Репутация:

Сильно короткий гайд. А если парсить в моногопотоке, и яваскрипт
 
F Оффлайн

fdccqaa

Участник
LV
3
 
16.09.2024
4
0
14
Награды
3
36

Репутация:

Дэмн, знал бы я это неделю назад
 
A Оффлайн

artpulp

Участник
LV
0
 
23.10.2024
2
0
6
48

Репутация:

Класс спасибо большое, очень полезно
 
T Оффлайн

tros95

Участник
LV
0
 
02.11.2024
15
0
7
Награды
1
26

Репутация:

Спасибо, полезные библиотеки, через gpt удобно запросы делать
 

Поиск по форуму

Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше....